///
/// erstelle Verbindung zum OS Server
///
private OSMWebService.OSMService GetOSMService()
{
OSMWebService.OSMService osmService = new OSMWebService.OSMService();
// "http://hostname:8580/OSMService";
osmService.Url = "http://" + OsmManager.WSHostname + ":" + OsmManager.WSPort.ToString() + "/OSMService";
// Anmeldung
osmService.Credentials = new System.Net.NetworkCredential(OsmManager.Username, OsmManager.Password);
return osmService;
}
///
/// sucht Elemente in einer Klasse
///
///
/// Sucht in der Klasse "className" alle Elemente, deren Wert des Attributes "attributName" mit
/// "value" übereinstimmen.
///
/// Liste oder null
private SearchResponse SearchItems(string className, string attributeName, string value)
{
OSMWebService.OSMService osmService = GetOSMService();
OSMWebService.SearchRequest searchRequest = new SearchRequest();
// welche Klassen abfragen
string[] classNames = new string[1];
classNames[0] = className;
searchRequest.classNames = classNames;
searchRequest.showAllAttributes = true;
// Suchkriterien (elid)
SearchCriteria searchCriteria = new SearchCriteria();
searchCriteria.attributeName = attributeName;
searchCriteria.sortOrder = OSMWebService.SortOrder.None;
searchCriteria.value = value;
searchCriteria.@operator = OSMWebService.SearchOperator.Equals;
SearchCriteria[] searchCriteriaArray = new SearchCriteria[1];
searchCriteriaArray[0] = searchCriteria;
searchRequest.criteria = searchCriteriaArray;
// suchen ...
SearchResponse searchResponse;
searchResponse = osmService.itemSearch(searchRequest);
return searchResponse;
}
///
/// liefert alle Elemente eine Klasse
///
/// Implementiert IDBConnector:GetAllElementsOfClass()
/// OSMElement Liste oder null
public ArrayList GetAllElementsOfClass(string sClassname)
{
// suchen ...
SearchResponse searchResponse = SearchItems(sClassname, "ELID", "*");
// Attribute dem Element zuweisen
int nResponses = searchResponse.numberOfItems;
if (nResponses == 0)
return null;
ArrayList aList = new ArrayList();
if (nResponses > 0)
{
foreach (OSMWebService.Item aItem in searchResponse.results)
{
OSMElement osmElement = new OSMElement();
osmElement.ELID = aItem.id;
foreach (OSMWebService.Attribute aAttribute in aItem.attributes)
{
OSMAttribute osmAttribute = new OSMAttribute(aAttribute.name, aAttribute.value);
osmElement.AddAttribute(osmAttribute);
}
aList.Add(osmElement);
}
}
return aList;
}