コード例 #1
0
ファイル: EchoImpl.cs プロジェクト: terryfan1109/win32-test
 public void asyncCalculate(CalculatorCallback callback, String value)
 {
     if (null != onEvent)
     {
         onEvent(2);
     }
     callback.callback(value.Length);
 }
コード例 #2
0
ファイル: EchoImpl.cs プロジェクト: terryfan1109/win32-test
 public void asyncCalculate(CalculatorCallback callback, String value)
 {
     if (null != onEvent)
     {
         onEvent(2);
     }
     callback.callback(value.Length);
 }
        private void setDynamicDefaults(IObject inObject, string mode)
        {
            try
            {
                //Convert row to feature (test for feature is null before using - this could be a table update)
                IFeature inFeature = inObject as IFeature;

                // Skip Orphan Junctions (saves time)
                if (inFeature != null)
                {
                    INetworkFeature inNetFeat = inObject as INetworkFeature;
                    if ((inNetFeat != null) &&
                        (inFeature.Class.ObjectClassID == inNetFeat.GeometricNetwork.OrphanJunctionFeatureClass.ObjectClassID))
                        return;
                }

                //Get cursor to dynamic values table retriving only
                ICursor tabCursor;
                getDefaultRows(inObject, out tabCursor);
                IRow row = null;
                if (tabCursor != null)
                    row = tabCursor.NextRow();

                //for each row in the matching rows (matched by table name or wildcard) returned from the config table
                while (row != null)
                {
                    //get fieldname
                    string fieldName = row.get_Value(dynTargetField).ToString();

                    //if this field is found in the feature/object being added or modified...
                    int fieldNum = inObject.Fields.FindField(fieldName);
                    if (fieldNum > -1)
                    {
                        // get requested method and any data parameters
                        string valMethod = row.get_Value(dynMethodField).ToString();
                        string valData = row.get_Value(dynDataField).ToString();

                        switch (mode)
                        {
                            case "OnCreate":
                                //Continue to next field in config table if create events were not requested
                                if (row.get_Value(dynCreateField).ToString() == "0")
                                {
                                    row = tabCursor.NextRow();
                                    continue;
                                }
                                break;
                            case "OnChange":
                                // Collect value for changed feature (stored for LAST VALUE method)
                                IRowChanges inChanges = inObject as IRowChanges;
                                bool changed = inChanges.get_ValueChanged(fieldNum);
                                if (changed)
                                    lastValueProperties.SetProperty(fieldName, inObject.get_Value(fieldNum));
                                //Continue to next field in config table if change events were not requested
                                if (row.get_Value(dynChangeField).ToString() == "0")
                                {
                                    row = tabCursor.NextRow();
                                    continue;
                                }
                                break;
                        }

                        // set values as specified
                        switch (valMethod)
                        {
                            case "TIMESTAMP":

                                inObject.set_Value(fieldNum, DateTime.Now);
                                break;

                            case "LAST_VALUE":

                                if (mode == "OnCreate")
                                {
                                    //if (inObject.get_Value(fieldNum) == null)
                                    //{
                                    object lastValue = lastValueProperties.GetProperty(fieldName);
                                    if (lastValue != null)
                                        inObject.set_Value(fieldNum, lastValue);
                                    //}
                                }

                                break;

                            case "FIELD":

                                // verify that field to copy exists
                                int fieldCopy = inObject.Fields.FindField(valData as string);
                                if (fieldCopy > -1)
                                {
                                    //copy value only if current field is empty
                                    string currentValue = inObject.get_Value(fieldNum).ToString();
                                    if (currentValue == "")
                                        inObject.set_Value(fieldNum, inObject.get_Value(fieldCopy));
                                }
                                break;

                            case "CURRENT_USER":

                                if (lastEditorName == null)
                                    lastEditorName = getCurrentUser();
                                inObject.set_Value(fieldNum, lastEditorName);
                                break;

                            case "GUID":

                                if (mode == "OnCreate") // SHould only set this once on create to give the object a unique value
                                {
                                    object currentValue = inObject.get_Value(fieldNum);
                                    if (DBNull.Value == currentValue) // Do not overwrite if someone else has already generated
                                    {
                                        Guid g = Guid.NewGuid();
                                        inObject.set_Value(fieldNum, g.ToString("B").ToUpper());
                                    }
                                }

                                break;

                            case "EXPRESSION":

                                if (mode == "OnCreate")
                                {
                                    if (inFeature != null & valData != null)
                                    {
                                        try
                                        {
                                            int calcField = inFeature.Fields.FindField(fieldName);
                                            //if (inFeature.get_Value(calcField) == null)
                                            //{
                                            int[] fids = { inFeature.OID };
                                            IGeoDatabaseBridge gdbBridge = new GeoDatabaseHelperClass();
                                            IFeatureCursor fCursor = (IFeatureCursor)gdbBridge.GetFeatures((IFeatureClass)inFeature.Class, ref fids, false);

                                            ICalculator calc = new CalculatorClass();
                                            calc.Expression = valData;
                                            calc.Field = fieldName;
                                            calc.Cursor = (ICursor)fCursor;
                                            calc.ShowErrorPrompt = false;

                                            ICalculatorCallback calculatorCallback = new CalculatorCallback();
                                            calc.Callback = calculatorCallback;

                                            calc.Calculate();
                                            calculatorCallback = null;
                                            //}
                                        }
                                        catch { }
                                    }
                                }
                                break;

                            default:
                                break;
                        }

                    }
                    row = tabCursor.NextRow();
                }

                if (null != tabCursor)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(tabCursor);
                }
            }
            catch (Exception ex)
            {
                _logHelper.addLogEntry(DateTime.Now.ToString(), "ERROR", "Error applying dynamic defaults.", ex.ToString());

                MessageBox.Show("Error: \n" + ex.ToString());
            }
        }
コード例 #4
0
        private void setDynamicDefaults(IObject inObject, string mode)
        {
            try
            {
                //Convert row to feature (test for feature is null before using - this could be a table update)
                IFeature inFeature = inObject as IFeature;

                // Skip Orphan Junctions (saves time)
                if (inFeature != null)
                {
                    INetworkFeature inNetFeat = inObject as INetworkFeature;
                    if ((inNetFeat != null) &&
                        (inFeature.Class.ObjectClassID == inNetFeat.GeometricNetwork.OrphanJunctionFeatureClass.ObjectClassID))
                    {
                        return;
                    }
                }

                //Get cursor to dynamic values table retriving only
                ICursor tabCursor;
                getDefaultRows(inObject, out tabCursor);
                IRow row = null;
                if (tabCursor != null)
                {
                    row = tabCursor.NextRow();
                }

                //for each row in the matching rows (matched by table name or wildcard) returned from the config table
                while (row != null)
                {
                    //get fieldname
                    string fieldName = row.get_Value(dynTargetField).ToString();

                    //if this field is found in the feature/object being added or modified...
                    int fieldNum = inObject.Fields.FindField(fieldName);
                    if (fieldNum > -1)
                    {
                        // get requested method and any data parameters
                        string valMethod = row.get_Value(dynMethodField).ToString();
                        string valData   = row.get_Value(dynDataField).ToString();

                        switch (mode)
                        {
                        case "OnCreate":
                            //Continue to next field in config table if create events were not requested
                            if (row.get_Value(dynCreateField).ToString() == "0")
                            {
                                row = tabCursor.NextRow();
                                continue;
                            }
                            break;

                        case "OnChange":
                            // Collect value for changed feature (stored for LAST VALUE method)
                            IRowChanges inChanges = inObject as IRowChanges;
                            bool        changed   = inChanges.get_ValueChanged(fieldNum);
                            if (changed)
                            {
                                lastValueProperties.SetProperty(fieldName, inObject.get_Value(fieldNum));
                            }
                            //Continue to next field in config table if change events were not requested
                            if (row.get_Value(dynChangeField).ToString() == "0")
                            {
                                row = tabCursor.NextRow();
                                continue;
                            }
                            break;
                        }

                        // set values as specified
                        switch (valMethod)
                        {
                        case "TIMESTAMP":

                            inObject.set_Value(fieldNum, DateTime.Now);
                            break;

                        case "LAST_VALUE":

                            if (mode == "OnCreate")
                            {
                                //if (inObject.get_Value(fieldNum) == null)
                                //{
                                object lastValue = lastValueProperties.GetProperty(fieldName);
                                if (lastValue != null)
                                {
                                    inObject.set_Value(fieldNum, lastValue);
                                }
                                //}
                            }


                            break;

                        case "FIELD":

                            // verify that field to copy exists
                            int fieldCopy = inObject.Fields.FindField(valData as string);
                            if (fieldCopy > -1)
                            {
                                //copy value only if current field is empty
                                string currentValue = inObject.get_Value(fieldNum).ToString();
                                if (currentValue == "")
                                {
                                    inObject.set_Value(fieldNum, inObject.get_Value(fieldCopy));
                                }
                            }
                            break;

                        case "CURRENT_USER":

                            if (lastEditorName == null)
                            {
                                lastEditorName = getCurrentUser();
                            }
                            inObject.set_Value(fieldNum, lastEditorName);
                            break;

                        case "GUID":

                            if (mode == "OnCreate")     // SHould only set this once on create to give the object a unique value
                            {
                                object currentValue = inObject.get_Value(fieldNum);
                                if (DBNull.Value == currentValue)     // Do not overwrite if someone else has already generated
                                {
                                    Guid g = Guid.NewGuid();
                                    inObject.set_Value(fieldNum, g.ToString("B").ToUpper());
                                }
                            }

                            break;

                        case "EXPRESSION":

                            if (mode == "OnCreate")
                            {
                                if (inFeature != null & valData != null)
                                {
                                    try
                                    {
                                        int calcField = inFeature.Fields.FindField(fieldName);
                                        //if (inFeature.get_Value(calcField) == null)
                                        //{
                                        int[] fids = { inFeature.OID };
                                        IGeoDatabaseBridge gdbBridge = new GeoDatabaseHelperClass();
                                        IFeatureCursor     fCursor   = (IFeatureCursor)gdbBridge.GetFeatures((IFeatureClass)inFeature.Class, ref fids, false);

                                        ICalculator calc = new CalculatorClass();
                                        calc.Expression      = valData;
                                        calc.Field           = fieldName;
                                        calc.Cursor          = (ICursor)fCursor;
                                        calc.ShowErrorPrompt = false;

                                        ICalculatorCallback calculatorCallback = new CalculatorCallback();
                                        calc.Callback = calculatorCallback;

                                        calc.Calculate();
                                        calculatorCallback = null;
                                        //}
                                    }
                                    catch { }
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }
                    row = tabCursor.NextRow();
                }

                if (null != tabCursor)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(tabCursor);
                }
            }
            catch (Exception ex)
            {
                _logHelper.addLogEntry(DateTime.Now.ToString(), "ERROR", "Error applying dynamic defaults.", ex.ToString());

                MessageBox.Show("Error: \n" + ex.ToString());
            }
        }