protected override void OnClick() { if (AAState._PerformUpdates) { AAState._PerformUpdates = false; AAState.unInitEditing(); } else { AAState._PerformUpdates = true; AAState.initEditing(); } //if (m_Editor == null) //{ // return; //} //if (m_Editor.EditState == esriEditState.esriStateEditing) //{ // MessageBox.Show("Please stop editing before toggling the extension"); // return; //} //if (AAState.initTable() == false) //{ // MessageBox.Show("The required tables are missing\r\n" + "Dynamic Value Table: " + AAState._defaultsTableName + "\r\n" + "Generate ID Table: " + AAState._sequenceTableName); // AAState._PerformUpdates = false; // AAState.setIcon(); // return; //} ////Check orginal state //bool origState = AAState._PerformUpdates; ////Perform work //AAState._PerformUpdates = !origState; //AAState.setIcon(); AAState.setIcon(); }
public long unversionedEdit(IQueryFilter qFilterGen, int sequenceColumnNum, int idxSeqField, int curLoop, ref ITransactions transactions) { long sequenceValue = -1; using (ComReleaser comReleaser = new ComReleaser()) { if (AAState._gentabWorkspace.IsInEditOperation) { // throw new Exception("Cannot use ITransactions during an edit operation."); } // Begin a transaction. if (transactions == null) { transactions = (ITransactions)AAState._gentabWorkspace; } transactions.StartTransaction(); try { // Use ITable.Update to create an update cursor. ICursor seq_updateCursor = AAState._gentab.Update(qFilterGen, true); comReleaser.ManageLifetime(seq_updateCursor); IRow seq_row = null; seq_row = seq_updateCursor.NextRow(); int sequenceInt = 1; if (seq_row != null) { if (idxSeqField > 0) { object seqInt = seq_row.get_Value(idxSeqField); if (seqInt != null) { if (seqInt != DBNull.Value) { try { sequenceInt = Convert.ToInt32(seqInt); } catch { } } } } object seqValue = seq_row.get_Value(sequenceColumnNum); if (seqValue == null) { sequenceValue = 0; } else if (seqValue.ToString() == "") { sequenceValue = 0; } else { try { sequenceValue = Convert.ToInt64(seqValue); } catch { sequenceValue = 0; } } AAState.WriteLine(" " + sequenceValue + " is the existing value and the interval is " + sequenceInt + ": " + DateTime.Now.ToString("h:mm:ss tt")); sequenceValue = sequenceValue + sequenceInt; seq_row.set_Value(sequenceColumnNum, sequenceValue); AAState.WriteLine(" " + seq_row.Fields.get_Field(sequenceColumnNum).AliasName + " changed to " + sequenceValue + ": " + DateTime.Now.ToString("h:mm:ss tt")); seq_updateCursor.UpdateRow(seq_row); transactions.CommitTransaction(); seq_updateCursor = AAState._gentab.Search(qFilter, true); if (seq_row != null) { seqValue = seq_row.get_Value(sequenceColumnNum); if (seqValue == null) { return(sequenceValue); } else if (seqValue.ToString() == "") { return(sequenceValue); } else { try { if (sequenceValue == Convert.ToInt64(seqValue)) { return(sequenceValue); } else { if (curLoop > 30) { MessageBox.Show("A unique ID could not be generated after 30 attempts: " + DateTime.Now.ToString("h:mm:ss tt")); } else { return(unversionedEdit(qFilterGen, sequenceColumnNum, idxSeqField, curLoop + 1, ref transactions)); } } } catch { return(sequenceValue); } } } return(sequenceValue); } else { AAState.WriteLine(" No records found in Generate ID table" + ": " + DateTime.Now.ToString("h:mm:ss tt")); transactions.AbortTransaction(); return(-1); } } catch (COMException comExc) { AAState.WriteLine(" Error saving transaction to DB" + ": " + DateTime.Now.ToString("h:mm:ss tt")); // If an error occurs during the inserts and updates, rollback the transaction. transactions.AbortTransaction(); return(-1); } } }
private string GenerateID(string valData) { string sequenceColumnName, sequenceFixedWidth, sequencePostfix = ""; int sequenceColumnNum; int sequenceIntColumnNum; int sequencePadding; string formatString; string[] args = null; string output = null; List <int> intFldIdxs = new List <int>(); ITable _gentab = Globals.FindTable(ArcMap.Application, "GenerateId"); try { AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorMess_14ar") + "GENERATE_ID"); if (_gentab != null) { sequenceColumnName = ""; sequenceColumnNum = -1; sequenceFixedWidth = ""; sequencePadding = 0; formatString = ""; bool onlyWhenNull = false; // Parse arguments if (valData != null) { args = valData.Split('|'); } switch (args.GetLength(0)) { case 1: // sequenceColumnName only sequenceColumnName = args[0].ToString(); break; case 2: // sequenceColumnName|sequenceFixedWidth sequenceColumnName = args[0].ToString(); sequenceFixedWidth = args[1].ToString(); break; case 3: // sequenceColumnName|sequenceFixedWidth|formatString sequenceColumnName = args[0].ToString(); sequenceFixedWidth = args[1].ToString(); formatString = args[2].ToString(); break; case 4: // sequenceColumnName|sequenceFixedWidth|formatString sequenceColumnName = args[0].ToString(); sequenceFixedWidth = args[1].ToString(); formatString = args[2].ToString(); onlyWhenNull = args[3].ToString().ToUpper() == "TRUE" ? true : false; break; default: break; } //object val = inObject.get_Value(intFldIdxs[0]); bool proceed = true; //if (onlyWhenNull && // (inObject.get_Value(intFldIdxs[0]) != null && // inObject.get_Value(intFldIdxs[0]) != DBNull.Value && // inObject.get_Value(intFldIdxs[0]).ToString().Trim() != "") // ) //{ // proceed = false; //} if (proceed) { //Check for requested zero padding of sequence number if (sequenceFixedWidth != "") { int.TryParse(sequenceFixedWidth.ToString(), out sequencePadding); } if (sequencePadding > 25) { AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain116")); AAState.WriteLine(" WARNING: " + sequencePadding + " 0's is what you have"); } else if (sequencePadding > 50) { MessageBox.Show(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain117")); } qFilter = new QueryFilterClass(); qFilter.WhereClause = "SEQNAME = '" + sequenceColumnName + "'"; sequenceColumnNum = AAState._gentab.Fields.FindField("SEQCOUNTER"); sequenceIntColumnNum = AAState._gentab.Fields.FindField("SEQINTERV"); ITransactions pTras = null; long sequenceValue = unversionedEdit(qFilter, sequenceColumnNum, sequenceIntColumnNum, 1, ref pTras); //Debug.WriteLine(sequenceValue.ToString()); pTras = null; if (sequenceValue == -1) { AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorError_14a") + "GENERATE_ID: " + A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorError_14ao")); } else { if (formatString == null || formatString == "" || formatString.ToLower().IndexOf("[seq]") == -1) { string setVal = (sequenceValue.ToString("D" + sequencePadding) + sequencePostfix).ToString(); output = (sequenceValue.ToString("D" + sequencePadding) + sequencePostfix).Trim(); } else { int locIdx = formatString.ToUpper().IndexOf("[SEQ]"); if (locIdx >= 0) { formatString = formatString.Remove(locIdx, 5); formatString = formatString.Insert(locIdx, sequenceValue.ToString("D" + sequencePadding)); } //formatString = formatString.Replace("[seq]", sequenceValue.ToString("D" + sequencePadding)); output = formatString.Trim(); } } } } else { AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorError_14a") + "GENERATE_ID: " + A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorError_14ap")); } } catch (Exception ex) { AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorError_14a") + "GENERATE_ID: " + ex.Message); } finally { if (qFilter != null) { Marshal.ReleaseComObject(qFilter); GC.Collect(300); GC.WaitForFullGCComplete(); qFilter = null; } AAState.WriteLine(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorMess_14as") + "GENERATE_ID"); } return(output); }
public void RunManualRules() { ICursor cursor = null; IFeatureCursor fCursor = null; bool ran = false; try { //Get list of editable layers IEditor editor = _editor; IEditLayers eLayers = (IEditLayers)editor; long lastOID = -1; string lastLay = ""; if (_editor.EditState != esriEditState.esriStateEditing) { return; } IMap map = editor.Map; IActiveView activeView = map as IActiveView; IStandaloneTable stTable; ITableSelection tableSel; IStandaloneTableCollection stTableColl = (IStandaloneTableCollection)map; long rowCount = stTableColl.StandaloneTableCount; long rowSelCount = 0; for (int i = 0; i < stTableColl.StandaloneTableCount; i++) { stTable = stTableColl.get_StandaloneTable(i); tableSel = (ITableSelection)stTable; if (tableSel.SelectionSet != null) { rowSelCount = rowSelCount + tableSel.SelectionSet.Count; } } long featCount = map.SelectionCount; int totalCount = (Convert.ToInt32(rowSelCount) + Convert.ToInt32(featCount)); if (totalCount >= 1) { editor.StartOperation(); if (MessageBox.Show("Are you sure you wish to apply attribute assistant manual rules for the selected " + totalCount + " rows and features?", "Confirm", System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { ran = true; //bool test = false; //Get list of feature layers UID geoFeatureLayerID = new UIDClass(); geoFeatureLayerID.Value = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}"; IEnumLayer enumLayer = map.get_Layers(((ESRI.ArcGIS.esriSystem.UID)geoFeatureLayerID), true); IFeatureLayer fLayer; IFeatureSelection fSel; ILayer layer; // Step through each geofeature layer in the map enumLayer.Reset(); // Create an edit operation enabling undo/redo try { while ((layer = enumLayer.Next()) != null) { // Verify that this is a valid, visible layer and that this layer is editable fLayer = (IFeatureLayer)layer; if (fLayer.Valid && eLayers.IsEditable(fLayer))//fLayer.Visible && { // Verify that this layer has selected features IFeatureClass fc = fLayer.FeatureClass; fSel = (IFeatureSelection)fLayer; if ((fc != null) && (fSel.SelectionSet.Count > 0)) { // test = true; fSel.SelectionSet.Search(null, false, out cursor); fCursor = cursor as IFeatureCursor; IFeature feat; while ((feat = (IFeature)fCursor.NextFeature()) != null) { lastLay = fLayer.Name; lastOID = feat.OID; IObject pObj = feat as IObject; AAState.FeatureManual(pObj); feat.Store(); } if (feat != null) { Marshal.ReleaseComObject(feat); } } } } } catch (Exception ex) { editor.AbortOperation(); ran = false; MessageBox.Show("RunManualRules\n" + ex.Message + " \n" + lastLay + ": " + lastOID, ex.Source); return; } finally { //try //{ // // Stop the edit operation // editor.StopOperation("Run Manual Rules - Features"); //} //catch (Exception ex) //{ } } try { for (int i = 0; i < stTableColl.StandaloneTableCount; i++) { stTable = stTableColl.get_StandaloneTable(i); tableSel = (ITableSelection)stTable; if (tableSel.SelectionSet != null) { if (tableSel.SelectionSet.Count > 0) { tableSel.SelectionSet.Search(null, false, out cursor); IRow pRow; while ((pRow = (IRow)cursor.NextRow()) != null) { lastOID = pRow.OID; lastLay = stTable.Name; IObject pObj = pRow as IObject; AAState.FeatureManual(pObj); pRow.Store(); } if (pRow != null) { Marshal.ReleaseComObject(pRow); } } } } } catch (Exception ex) { editor.AbortOperation(); MessageBox.Show("RunManualRules\n" + ex.Message + " \n" + lastLay + ": " + lastOID, ex.Source); ran = false; return; } finally { //try //{ // Stop the edit operation // editor.StopOperation("Run Manual Rules - Features"); //} //catch (Exception ex) //{ } } try { editor.StopOperation("Run Manual Rules - Features"); } catch { } } } else { MessageBox.Show("Please select some features or rows to run this process."); } } catch (Exception ex) { MessageBox.Show(ex.Message + " \n" + "RunManualRules", ex.Source); ran = false; return; } finally { if (ran) { MessageBox.Show("Process has completed successfully"); } if (cursor != null) { Marshal.ReleaseComObject(cursor); } if (fCursor != null) { Marshal.ReleaseComObject(fCursor); } } }
public AttributeAssistantToggleCommand() { m_Editor = Globals.getEditor(ArcMap.Application); AAState.setIcon(); }
protected override void OnClick() { //AAState. = false; AAState.promptLastValueProperrtySet(); }