public GroupForm(Dictionary <String, String> SettingList, IServerObject ServerObj, String groupName, String groupMembers, String userName, String mode) { InitializeComponent(); try { this.ServerObj = ServerObj; this.SettingList = SettingList; this.textBoxName.Text = groupName; this.textBoxMembers.Text = groupMembers; this.userName = userName; this.groupName = groupName; this.mode = mode; if (this.mode == "edit") { String line = ""; String[] arr = groupMembers.Split(';'); foreach (String a in arr) { if (a.Trim() != "") { line = line + a.ToString().Trim() + ";" + Environment.NewLine; } } this.textBoxMembers.Text = line; } } catch { //Error mesage will be catched in SelectForm ??????????????????????? } }
public LoginPage() { Text = "Chat Service Login/Register"; Console.WriteLine("Client starting ..."); InitializeComponent(); clientProv = new BinaryClientFormatterSinkProvider(); serverProv = new BinaryServerFormatterSinkProvider(); serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; Hashtable props = new Hashtable(); props["name"] = "remotingClient"; props["port"] = 0; //First available port tcpChan = new TcpChannel(props, clientProv, serverProv); ChannelServices.RegisterChannel(tcpChan, false); RemotingConfiguration.RegisterWellKnownClientType(new WellKnownClientTypeEntry(typeof(IServerObject), serverURI)); try { remoteServer = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURI); Console.WriteLine(remoteServer.HelloWorld()); } catch (Exception ex) { Console.WriteLine("Could not connect: " + ex.Message); } }
private IFeatureCursor GetEditAreas(IServerObject serverObject, string versionName) { IFeatureClass editAreasFC = null; try { // Open edit areas feature class in default workspace editAreasFC = GetEditAreaFeatureClass(serverObject); // Search for entries for the given version QueryFilter qryFilter = null; qryFilter = new QueryFilter(); qryFilter.WhereClause = _versionNameFName + "='" + versionName + "'"; return(editAreasFC.Search(qryFilter, false)); } catch (Exception e) { _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".GetEditAreas()", 200, "Error while retrieving edit areas: " + e.ToString()); } finally { editAreasFC = null; } return(null); }
public async Task StartScanAsync(IServerObject server, SynchronizationContext ctx) { if (server == null) { return; } syncContext = ctx; lock (_lock) { _syncTable.Clear(); } _visitedNames.Clear(); redirected = globalErrors = globalWarnings = false; server.Log.Clear(); server.Log.AppendLine("**************************************************************************"); server.Log.AppendLine($"Processing '{server.ServerAddress}'"); server.Log.AppendLine("**************************************************************************"); server.Log.AppendLine($"Scan started: {DateTime.Now:dd-MM-yyyy HH:mm:ss}"); using (Entry = new ServerObjectWrapper(server)) { Entry.InternalChain = new X509Chain(!Config.AllowUserTrust); ServicePointManager.SecurityProtocol = (SecurityProtocolType)Config.SslProtocolsToUse; // execute main routine await createRequest(); } // calculate resulting status of the object getEffectiveStatus(); // release resources and close connections NativeEntry.Log.AppendLine("Finished!"); NativeEntry.Log.Progress = 100; NativeEntry.Log.AppendLine("Scan ended: " + DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss")); redirected = false; }
public ClientObject(TcpClient tcpClient, IServerObject serverObject) { Id = Guid.NewGuid().ToString(); client = tcpClient; _serverObject = serverObject; _serverObject.AddConnection(this); }
public MainPage(User userLogged, IServerObject server) { Text = "Chat Service"; //get user from loginPage this.userLogged = userLogged; this.activeChatPages = new Dictionary <string, List <ChatPage> >(); InitializeComponent(); labelUserFullName.Text = userLogged.Name; labelUserNickname.Text = userLogged.Nickname; //Server components this.eventProxy = new EventProxy(); this.remoteServer = server; //get activeUsers from server GenerateActiveUsersList(remoteServer.getOnlineUsers()); //Handle proxy eventProxy.OnlineUsersChanged += new OnlineUsersChangedEvent(EventProxy_OnlineUsersChanged); eventProxy.NewChatRequest += new NewChatRequestEvent(EventProxy_NewChatRequest); eventProxy.OpenAcceptedChatRequest += new OpenAcceptedChatRequestEvent(EventProxy_OpenAcceptedChatRequest); eventProxy.CloseOtherUserChatPage += new CloseOtherUserChatPageEvent(EventProxy_CloseOtherUserChatPage); //attach the proxy handle functions to Server events remoteServer.OnlineUsersChanged += new OnlineUsersChangedEvent(eventProxy.LocallyHandleOnlineUsersChanged); remoteServer.NewChatRequest += new NewChatRequestEvent(eventProxy.LocallyHandleNewChatRequest); remoteServer.OpenAcceptedChatRequest += new OpenAcceptedChatRequestEvent(eventProxy.LocallyHandleOpenAcceptedChatRequest); remoteServer.CloseOtherUserChatPage += new CloseOtherUserChatPageEvent(eventProxy.LocallyHandleCloseOtherUserChatPageRequest); }
public SendForm(Dictionary <String, String> SettingList, IServerObject ServerObj, String userName, String info, List <String> ListReplyName) { InitializeComponent(); this.SettingList = SettingList; this.ServerObj = ServerObj; this.userName = userName; this.info = info; this.ListReplyName = ListReplyName; }
/** * This method returns the utility network dataset. */ public IDataset GetUNDataset(IServerObject serverObject, string versionName = null) { IMapServer mapService = (MapServer)serverObject; IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject; // Get feature class from any layer IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0); // Get the container feature dataset IFeatureDataset fd = fc.FeatureDataset; // Open feature dataset in specified version if (!String.IsNullOrEmpty(versionName)) { IWorkspace workspace = fd.Workspace; IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace; IVersion4 childVersion = (IVersion4)versionedWorkspace.FindVersion(versionName); IFeatureWorkspace childFWS = (IFeatureWorkspace)childVersion; fd = childFWS.OpenFeatureDataset(fd.Name); } // Loop through contained datasets to find the UN one IDataset ds = (IDataset)fd; IEnumDataset enumSubDS = ds.Subsets; IDataset subDS = enumSubDS.Next(); while (subDS != null) { if (subDS.Type == esriDatasetType.esriDTUtilityNetwork) { return(subDS); } subDS = enumSubDS.Next(); } return(null); // Alternative approach is to use the dataset extension /* * // Get extension container * IFeatureDatasetExtensionContainer fdce = (IFeatureDatasetExtensionContainer)fd; * * // Find UN dataset by type * IFeatureDatasetExtension unFDSExt = fdce.FindExtension(esriDatasetType.esriDTUtilityNetwork); * IDatasetContainer2 unDSContainer = (IDatasetContainer2)unFDSExt; * * IEnumDatasetName dsNames = unDSContainer.DatasetNames[esriDatasetType.esriDTUtilityNetwork]; * * IDatasetName dsName = dsNames.Next(); * if (dsName != null) * { * unDataset = unDSContainer.DatasetByName[esriDatasetType.esriDTUtilityNetwork, dsName.Name]; * } */ }
public void testConnection() { try { // try to call a function (Ping) on the server IServerObject remoteServer = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURI); remoteServer.Ping(); MessageBox.Show("The server is up! (" + serverURI + ")."); } catch (Exception ex) { MessageBox.Show("Can't connect to server (" + serverURI + ")."); } }
public InfoForm(IServerObject ServerObj, Dictionary <String, String> SettingList, String strInfo) { InitializeComponent(); try { this.SettingList = SettingList; this.strInfo = strInfo; this.ListUserAttr = ServerObj.GetObjectAttr("domainUserAttributes"); this.ListHostAttr = ServerObj.GetObjectAttr("domainHostAttributes"); } catch { } }
static void Main(string[] args) { try { server = new ServerObject(); listenThread = new Thread(new ThreadStart(server.Listen)); listenThread.Start(); } catch (Exception ex) { server.Disconnect(); Console.WriteLine(ex.Message); } Console.ReadLine(); }
public SelectForm(Dictionary <String, String> SettingList, IServerObject ServerObj, String userName) { InitializeComponent(); try { this.SettingList = SettingList; this.ServerObj = ServerObj; this.ListClientsInfo = ServerObj.GetClientsInfo(); this.ListADGroups = ServerObj.GetADGroups(); userNameCurrent = userName.Split('(')[0].Trim(); this.ListPrivateGroup = ServerObj.GetPrivateGroups(userNameCurrent); } catch { } }
public IDataset GetUNDataset2(IServerObject serverObject, string versionName = null) { IDataset unDataset = null; IMapServer mapService = (MapServer)serverObject; IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject; // Get feature class from any layer IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0); // Get the container feature dataset IFeatureDataset fd = fc.FeatureDataset; // Open feature dataset in specified version if (!String.IsNullOrEmpty(versionName)) { IWorkspace workspace = fd.Workspace; IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace; IVersion4 childVersion = (IVersion4)versionedWorkspace.FindVersion(versionName); IFeatureWorkspace childFWS = (IFeatureWorkspace)childVersion; fd = childFWS.OpenFeatureDataset(fd.Name); } // Get extension container IFeatureDatasetExtensionContainer fdce = (IFeatureDatasetExtensionContainer)fd; // Find UN dataset by type IFeatureDatasetExtension unFDSExt = fdce.FindExtension(esriDatasetType.esriDTUtilityNetwork); IDatasetContainer2 unDSContainer = (IDatasetContainer2)unFDSExt; IEnumDatasetName dsNames = unDSContainer.DatasetNames[esriDatasetType.esriDTUtilityNetwork]; IDatasetName dsName = dsNames.Next(); if (dsName != null) { unDataset = unDSContainer.DatasetByName[esriDatasetType.esriDTUtilityNetwork, dsName.Name]; } return(unDataset); }
private IFeatureClass GetEditAreaFeatureClass(IServerObject serverObject) { try { // Get GDB workspace IMapServer mapService = (MapServer)serverObject; IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject; IDataset ds = (IDataset)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0); IWorkspace workspace = ds.Workspace; // Open edit areas feature class in default workspace IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace; IVersion4 defaultVersion = (IVersion4)versionedWorkspace.DefaultVersion; IFeatureWorkspace defaultFWS = (IFeatureWorkspace)defaultVersion; return(defaultFWS.OpenFeatureClass(_editAreasFCName)); } catch (Exception e) { _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".GetEditAreaFeatureClass()", 200, "Error while retrieving edit areas feature class: " + e.ToString()); } return(null); }
private bool RemoveEditAreas(IServerObject serverObject, string versionName) { bool isOk = false; IFeature curFeature = null; IFeatureCursor fCursor = null; try { // Search for entries for the given version fCursor = GetEditAreas(serverObject, versionName); if (fCursor != null) { curFeature = fCursor.NextFeature(); } while (curFeature != null) { curFeature.Delete(); curFeature = fCursor.NextFeature(); } isOk = true; fCursor.Flush(); } catch (Exception e) { _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".RemoveEditArea()", 200, "Error while deleting edit area: " + e.ToString()); } finally { fCursor = null; curFeature = null; } return(isOk); }
/// <summary> /// The bttn_Connect_Click /// </summary> /// <param name="sender">The sender<see cref="object"/></param> /// <param name="e">The e<see cref="EventArgs"/></param> private void bttn_Connect_Click(object sender, EventArgs e) { if (isconnected) { return; } try { remoteServer = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURI); remoteServer.MessageArrived += new MessageArrivedEvent(eventProxy.LocallyHandleMessageArrived); remoteServer.PublishMessage("Client Connected"); //This is where it will break if we didn't connect //Now we have to attach the events... isconnected = true; } catch (Exception ex) { isconnected = false; SetTextBox("Could not connect: " + ex.Message); ErrorLogger.ErrorLog(ex); } }
public void StartScan(IServerObject server) { StartScanAsync(server, null).Wait(); }
private byte[] ExecuteStoredProcedureHandler(NameValueCollection boundVariables, JsonObject operationInput, string outputFormat, string requestProperties, out string responseProperties) { responseProperties = null; string retString = ""; try { //return Encoding.UTF8.GetBytes(retStrn); //return null; string pipeDelimetedStringValuePairsForStoredProc = ""; bool found = operationInput.TryGetString("ParamValuePairs", out pipeDelimetedStringValuePairsForStoredProc); if (!found || string.IsNullOrEmpty(pipeDelimetedStringValuePairsForStoredProc)) { throw new ArgumentNullException("ParamValuePairs"); } string extra; found = operationInput.TryGetString("Extra", out extra); if (!found || string.IsNullOrEmpty(extra)) { throw new ArgumentNullException("extra"); } responseProperties = null; IServerEnvironment3 senv = GetServerEnvironment() as IServerEnvironment3; JsonObject result = new JsonObject(); JsonObject suinfoj = new JsonObject(); //get user info and serialize into JSON IServerUserInfo suinfo = senv.UserInfo; if (null != suinfo) { suinfoj.AddString("currentUser", suinfo.Name); IEnumBSTR roles = suinfo.Roles; List <string> rolelist = new List <string>(); if (null != roles) { string role = roles.Next(); while (!string.IsNullOrEmpty(role)) { rolelist.Add(role); role = roles.Next(); } } suinfoj.AddArray("roles", rolelist.ToArray()); result.AddJsonObject("serverUserInfo", suinfoj); } else { result.AddJsonObject("serverUserInfo", null); } IServerObject so = serverObjectHelper.ServerObject; retString = "got so>"; string progString = ""; retString += "> Stored Proc via oleDB ";// + ex.Message; OleDbConnection con = new OleDbConnection(); string paramsThatParsed = ""; con.ConnectionString = @"Provider =SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=" + extra.Split(',')[0] + ";Data Source=" + extra.Split(',')[1];// @"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TestDB;Data Source=PC684"; // string storedProcedureName = "dbo.apLITSaveChanges"; bool isStatusOutput = Convert.ToBoolean(extra.Split(',')[2]); //the connection string below uses integrated security which is usually superior to storing credential in visible text //con.ConnectionString = @"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TestDB;Data Source=PC684"; //con.Open(); //retString += ">opened connection"; string SQLString = ""; OleDbCommand cmd = new OleDbCommand(storedProcedureName, con); cmd.CommandType = System.Data.CommandType.StoredProcedure; string userName = "******"; if (suinfo.Name != null) { userName = suinfo.Name; } cmd.Parameters.AddWithValue("@WindowsLogin", userName); SQLString += "@WindowsLogin='******'"; //SQLString += "@WindowsLogin="******">created command"; string[] paramValsForStoredProc = pipeDelimetedStringValuePairsForStoredProc.Split('|'); foreach (string paramVal in paramValsForStoredProc) { string param = paramVal.Split(',')[0]; paramsThatParsed += "," + param; string val = paramVal.Split(',')[1]; retString += ">param and value : " + param + " = " + val; param = "@" + param; if (param.ToUpper().Contains("GEOLOCID")) { int i = int.Parse(val); cmd.Parameters.AddWithValue(param, i); SQLString += ", " + param + "= " + i; } else if (param.ToUpper() == "@LATITUDE" || param.ToUpper() == "@LONGITUDE") { double d = double.Parse(val); cmd.Parameters.AddWithValue(param, d); SQLString += ", " + param + "= " + d; } else if (param.ToUpper() == "@STATUS") { if (isStatusOutput) { //cmd.Parameters[param].Direction = ParameterDirection.Output; retString += ">Set direction of status parameter to output"; SQLString += ", @STATUS = @localstatus OUTPUT"; } } else { cmd.Parameters.AddWithValue(param, val); //SQLString += ", " + param + "= " + val ; SQLString += ", " + param + "= '" + val + "'"; } }//CurGeoLocID,NewGeoLocID,Address,City,ZipCode,Latitude,Longitude,FacilityName,AppID,WindowsLogin,ServerName,ServerName,Status SQLString = "exec dbo.apLITSaveChanges " + SQLString; if (isStatusOutput) { SQLString = "DECLARE @localstatus varchar(256);" + SQLString; } string retStrn = UseAOToCreateUpdateFeatures(SQLString); return(Encoding.UTF8.GetBytes(retStrn)); return(null); cmd.Connection = con; cmd.ExecuteNonQuery(); return(Encoding.UTF8.GetBytes(result.ToJson() + " - " + retString.ToString())); } catch (Exception ex) { return(Encoding.UTF8.GetBytes("ERROR " + ex.ToString() + " : " + retString.ToString())); } }
private void LogOnServer() { try { m_compIP = GetCompIP(Dns.GetHostName().ToLower()); BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider(); serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider(); IDictionary props = new Hashtable(); props["port"] = portClient; props["name"] = ""; clientChannel = new TcpChannel(props, clientProv, serverProv); ChannelServices.RegisterChannel(clientChannel, false); ClientObj = new ClientObject(this); m_obj = RemotingServices.Marshal(ClientObj, "ClientObject.soap"); String serverURL = "tcp://" + ipAddressServer + ":" + portServer.ToString() + "/ServerObject.rem"; ServerObj = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURL); RSend.ClientInfo ClData = new RSend.ClientInfo(userName, info, m_compIP, portClient, DateTime.Now); if (ServerObj.Logon(ClData)) { b_IsConnected = true; // selftest block begin if (selftest) { List <String> ListSendServer = new List <string>(); ListSendServer.Add(userName); ServerObj.SendMessageToServer(userName, ListSendServer, "selftest", false); int i = 0; int count = (int)(Math.Round((double)timeoutSelftest / 1000 * 2)); while (i < count) { if (selftestResult) { i = count; } else { System.Threading.Thread.Sleep(500); i++; } } if (selftestResult) { Online(); } else { LogOffServer(); } } // selftest block end else { Online(); } } else { b_IsConnected = false; LogOffServer(); } } catch { Offline(); } }
/// <summary> /// /// </summary> /// <param name="pSOH"></param> public void Init ( IServerObjectHelper pSOH ) { try { _soHelper = pSOH; _serverLog = new ServerLogger(); _serverObject = pSOH.ServerObject; _restServiceSOI = new RestSOIHelper(_soHelper); _SoapSOIHelper = new SoapSOIHelper(_soHelper, _wsdlFilePath); if (File.Exists(_permissionFilePath)) { //TODO REMOVE _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".init()", 200, "Reading permissions from " + _permissionFilePath); _servicePermissionMap = ReadPermissionFile(_permissionFilePath); //TODO REMOVE _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".init()", 200, "Total permission entries: " + _servicePermissionMap.Count()); } else { _serverLog.LogMessage(ServerLogger.msgType.error, _soiName + ".init()", 500, "Permission file does not exist at " + _permissionFilePath); } InitFiltering(); _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".init()", 200, "Initialized " + _soiName + " SOI."); } catch (Exception e) { _serverLog.LogMessage(ServerLogger.msgType.error, _soiName + ".init()", 500, "Exception: " + e.Message + " in " + e.StackTrace); } }
private void SendMessage() { try { List <String> ListClientsInfo = new List <string>(); List <String> ListSend = new List <string>(); List <String> ListSendServer = new List <string>(); String ipAddressServer = ConfigurationSettings.AppSettings["ipAddressServer"].Trim(); int portServer = Convert.ToInt32(ConfigurationSettings.AppSettings["portServer"].Trim()); String to = ConfigurationSettings.AppSettings["to"].Trim(); String text = ConfigurationSettings.AppSettings["Text"].Trim(); if (ipAddressServer == "") { Console.Write("Parameter 'ipAddressServer' cannot be empty! Please check configuration file!"); return; } if (to == "") { Console.Write("Parameter 'to' cannot be empty! Please check configuration file!"); return; } if (text == "") { Console.Write("Parameter 'text' cannot be empty! Please check configuration file!"); return; } String hostName = Dns.GetHostName().ToLower(); if (hostName != "") { if (hostName.Length > 1) { hostName = hostName.ToLower(); hostName = hostName.Remove(1).ToUpper() + hostName.Substring(1); } else { hostName = hostName.ToUpper(); } } String userName = "******" + hostName + ")"; String serverURL = "tcp://" + ipAddressServer + ":" + portServer.ToString() + "/ServerObject.rem"; IServerObject ServerObj = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURL); ListClientsInfo = ServerObj.GetClientsInfo(); if (to == "*") { ListSendServer = ListClientsInfo; if (ListSendServer.Count == 0) { Console.Write("Sorry. There is nobody to send this message."); return; } } else { String[] arrayTo = to.Split(';'); foreach (String arr in arrayTo) { String tmp = arr.Trim(); if (tmp == "") { continue; } ListSend.Add(tmp); } for (int i = 0; i < ListSend.Count; i++) { for (int j = 0; j < ListClientsInfo.Count; j++) { if (Regex.IsMatch(ListClientsInfo[j].ToString(), ListSend[i].ToString(), RegexOptions.IgnoreCase)) { ListSendServer.Add(ListClientsInfo[j].ToString().Split(')')[0].Trim() + ")"); } } } if (ListSendServer.Count > 0) { ListSendServer.Sort(); int index = 0; while (index < ListSendServer.Count - 1) { if (ListSendServer[index] == ListSendServer[index + 1]) { ListSendServer.RemoveAt(index); } else { index++; } } } else { Console.Write("Sorry. There is nobody to send this message."); return; } } AsyncCallback SendMessageCallBack = new AsyncCallback(SendMessageReturned); SendMessageDelegate SMDel = new SendMessageDelegate(ServerObj.SendMessageToServer); IAsyncResult SendMessageAsyncResult = SMDel.BeginInvoke(userName, ListSendServer, text, false, SendMessageCallBack, SMDel); Console.Write("The message has been sent."); } catch (Exception ex) { Console.Write("Cannot send this message. Either RSend server is offline or incorrect parameters in configuration file."); // + ex.ToString()); } }
private bool AddEditArea(IServerObject serverObject, string creator, string versionName, int editCount, IEnvelope editZone, bool autoExpandZone = true) { bool isOk = false; IFeatureClass editAreasFC = null; try { // Open edit areas feature class in default workspace editAreasFC = GetEditAreaFeatureClass(serverObject); // Get field indices int creatorFIdx = editAreasFC.FindField(_creatorFName); int creationDateFIdx = editAreasFC.FindField(_creationDateFName); int lastUpdateFIdx = editAreasFC.FindField(_lastUpdateFName); int editCountFIdx = editAreasFC.FindField(_editCountFName); int versionNameFIdx = editAreasFC.FindField(_versionNameFName); DateTime currentTime = DateTime.Now; // Expand zone to make it more visible if (autoExpandZone) { double expandRatio = (editCount <= 3) ? 1.5 : 1.15; editZone.Expand(expandRatio, expandRatio, true); } // Check if there's an existing area IFeature curFeature = null; IFeatureCursor fCursor = GetEditAreas(serverObject, versionName); if (fCursor != null && (curFeature = fCursor.NextFeature()) != null) { // Union the edit zones IPolygon curZone = (IPolygon)curFeature.Shape; IGeometry geometryBag = new GeometryBag(); geometryBag.SpatialReference = curZone.SpatialReference; IGeometryCollection geometryCollection = (IGeometryCollection)geometryBag; geometryCollection.AddGeometry(curZone); geometryCollection.AddGeometry(editZone); Polygon zoneConstructor = new Polygon(); ITopologicalOperator newZone = (ITopologicalOperator)zoneConstructor; newZone.ConstructUnion((IEnumGeometry)geometryCollection); // Update feature values curFeature.Shape = (IGeometry)newZone; curFeature.Value[lastUpdateFIdx] = currentTime; int curCount = (int)curFeature.Value[editCountFIdx]; curFeature.Value[editCountFIdx] = curCount + editCount; // Store feature curFeature.Store(); curFeature = null; } else { // Save edit zone to feature class IFeature zoneFeature = editAreasFC.CreateFeature(); zoneFeature.Value[creatorFIdx] = creator; zoneFeature.Value[creationDateFIdx] = currentTime; zoneFeature.Value[lastUpdateFIdx] = currentTime; zoneFeature.Value[versionNameFIdx] = versionName; zoneFeature.Value[editCountFIdx] = editCount; // Set geometry Polygon editAreaPoly = new Polygon(); ISegmentCollection editAreaSeg = (ISegmentCollection)editAreaPoly; editAreaSeg.SetRectangle(editZone); IZAware polyZAware = editAreaPoly as IZAware; polyZAware.ZAware = false; zoneFeature.Shape = polyZAware as IGeometry; // Store feature zoneFeature.Store(); fCursor.Flush(); fCursor = null; zoneFeature = null; } isOk = true; } catch (Exception e) { _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".AddEditArea()", 200, "Error while adding edit are: " + e.ToString()); } finally { editAreasFC = null; } return(isOk); }
private byte[] ProcessEditAreas(IServerObject serverObject, string versionName) { try { // Open utility network IDataset unDataset = _soiUtil.GetUNDataset(serverObject, versionName); IWorkspace workspace = (IWorkspace)unDataset.Workspace; // Get all the dirty areas in the given validation area IBaseNetwork baseNetwork = (IBaseNetwork)unDataset; ITable dirtyAreaTable = baseNetwork.DirtyAreaTable; string shapeFieldName = ((IFeatureClass)dirtyAreaTable).ShapeFieldName; int areaFieldIndex = dirtyAreaTable.FindField(shapeFieldName); int creatorFieldIndex = dirtyAreaTable.FindField("CREATOR"); // Get UN schema version IDatasetComponent dsComponent = (IDatasetComponent)unDataset; IDEBaseNetwork deBaseNetwork = (IDEBaseNetwork)dsComponent.DataElement; int unVersion = deBaseNetwork.SchemaGeneration; // Get inserts made to dirty areas table in the current version // For UN > V4, Errors are discarded (ERROCODE>0) to only retain true dirty areas // Note that changes made in the last edit session must be saved for this to work // as it is not possible to get the modifications until they have been saved. IVersionedTable versionedTable = (IVersionedTable)dirtyAreaTable; QueryFilter qryFilter = null; if (unVersion >= 4) { qryFilter = new QueryFilter(); qryFilter.WhereClause = _errorCodeFName + "=0"; } IDifferenceCursor diffCursor = versionedTable.Differences(dirtyAreaTable, esriDifferenceType.esriDifferenceTypeInsert, qryFilter); // Loop through added rows to construct the modified zone extent int editCount = 0; int OID; IRow diffRow; IEnvelope editZone = null; string creator = ""; diffCursor.Next(out OID, out diffRow); // Return an error if no dirty areas found as it may be because the last edits were not saved if (diffRow == null) { JSONObject responseJSON = new JSONObject(); responseJSON.AddBoolean("success", false); JSONObject errorJSON = new JSONObject(); errorJSON.AddLong("extendedCode", (int)fdoError.FDO_E_DIRTY_AREA_BUILD_EXTENT_DO_NOT_INTERSECT); errorJSON.AddString("message", "A dirty area is not present within the validate network topology input extent. A validate network topology process did not occur."); JSONArray detailsJSON = new JSONArray(); detailsJSON.AddString("Make sure to save edits before validating."); errorJSON.AddJSONArray("details", detailsJSON); responseJSON.AddJSONObject("error", errorJSON); return(Encoding.UTF8.GetBytes(responseJSON.ToJSONString(null))); } while (diffRow != null) { editCount += 1; creator = diffRow.Value[creatorFieldIndex].ToString(); IGeometry rowShape = (IGeometry)diffRow.Value[areaFieldIndex]; IEnvelope rowArea = rowShape.Envelope; if (editZone != null) { editZone.Union(rowArea); } else { editZone = rowArea.Envelope; } diffCursor.Next(out OID, out diffRow); } diffCursor = null; versionedTable = null; workspace = null; // Add new or modify existing edit zone if (editZone != null) { AddEditArea(serverObject, creator, versionName, editCount, editZone); } } catch (Exception e) { _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".AddEditArea()", 200, "Error while adding edit are: " + e.ToString()); } return(null); }
/// <summary> /// Initializes a new instance of the <see cref="MapServer"/> class. /// </summary> /// <param name="serverObject">The server object.</param> public MapServer(IServerObject serverObject) { Server = serverObject as IMapServer3; if (_server == null) throw new Exception("Unable to access the map server."); }
public ServerObjectWrapper(IServerObject serverObject) { ServerObject = serverObject; }