public virtual string getNodeDescription(IObjectWithPathAndChildSelector source, string defDescription = "")
 {
     if (source is IObjectWithNameAndDescription)
     {
         IObjectWithNameAndDescription child_IObjectWithNameAndDescription = (IObjectWithNameAndDescription)source;
         return(child_IObjectWithNameAndDescription.description);
     }
     return(defDescription);
 }
        /// <summary>
        /// Builds the data table hor.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="items">The items.</param>
        /// <param name="extraColumn">The extra column.</param>
        /// <param name="columns">The columns.</param>
        /// <returns></returns>
        public static DataTable BuildDataTableHor <T>(this T items, PropertyEntryColumn extraColumn, params string[] columns) where T : IEnumerable, IObjectWithNameAndDescription
        {
            if (items is IObjectWithNameAndDescription)
            {
                IObjectWithNameAndDescription items_IObjectWithNameAndDescription = (IObjectWithNameAndDescription)items;

                return(items.BuildDataTableHorizontal(items_IObjectWithNameAndDescription.name, items_IObjectWithNameAndDescription.description, extraColumn, columns));
            }

            return(items.BuildDataTableHorizontal("Instance list", "", extraColumn, columns));
        }
Exemple #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PropertyEntry"/> class.
        /// </summary>
        /// <param name="key">The key.</param>
        /// <param name="value">The value.</param>
        /// <param name="name">Initial value for Display Name</param>
        /// <param name="description">Initial description - overide of description found in <c>value</c> object</param>
        /// <param name="relevance">The relevance - override of info found in <c>value</c></param>
        /// <seealso cref="imbSCI.Core.interfaces.IValueWithRoleInfo"/>
        /// <seealso cref="imbSCI.Core.interfaces.IValueWithUnitInfo"/>
        /// <seealso cref="imbSCI.Core.interfaces.IValueWithImportanceInfo"/>
        /// <seealso cref="IObjectWithNameAndDescription"/>
        public PropertyEntry(Object key, Object value, String name = "", String description = "", dataPointImportance relevance = dataPointImportance.normal)
        {
            // this.setFromEnumType(typeof(PropertyEntryColumn));

            this[PropertyEntryColumn.entry_key] = key;

            Object input = value;

            this[PropertyEntryColumn.entry_name]        = name;
            this[PropertyEntryColumn.entry_description] = description;
            this[PropertyEntryColumn.entry_importance]  = relevance.ToString();

            this[PropertyEntryColumn.entry_value] = value;

            if (value is IValueWithUnitInfo)
            {
                IValueWithUnitInfo value_IValueWithUnitInfo = (IValueWithUnitInfo)value;
                this[PropertyEntryColumn.entry_unit]     = value_IValueWithUnitInfo.unit_sufix;
                this[PropertyEntryColumn.entry_unitname] = value_IValueWithUnitInfo.unit_name;
            }

            if (input is IValueWithRoleInfo)
            {
                IValueWithRoleInfo input_IValueWithRoleInfo = (IValueWithRoleInfo)input;
                this[PropertyEntryColumn.role_letter] = input_IValueWithRoleInfo.role_letter;
                this[PropertyEntryColumn.role_name]   = input_IValueWithRoleInfo.role_name;
                this[PropertyEntryColumn.role_symbol] = input_IValueWithRoleInfo.role_symbol;
            }

            if (input is IObjectWithNameAndDescription)
            {
                IObjectWithNameAndDescription input_IObjectWithNameAndDescription = (IObjectWithNameAndDescription)input;

                this[PropertyEntryColumn.entry_name]        = input_IObjectWithNameAndDescription.name;
                this[PropertyEntryColumn.entry_description] = input_IObjectWithNameAndDescription.description;
            }

            if (input is IValueWithImportanceInfo)
            {
                IValueWithImportanceInfo input_IValueWithImportanceInfo = (IValueWithImportanceInfo)input;
                this[PropertyEntryColumn.entry_importance] = input_IValueWithImportanceInfo.relevance.ToString();
            }

            if (imbSciStringExtensions.isNullOrEmptyString(this[PropertyEntryColumn.entry_name]))
            {
                this[PropertyEntryColumn.entry_name] = key.ToString().imbTitleCamelOperation(true);
            }

            if (imbSciStringExtensions.isNullOrEmptyString(this[PropertyEntryColumn.entry_description]))
            {
                //this[PropertyEntryColumn.entry_description] = this.  this.getStringLine(",", PropertyEntryColumn.role_name, PropertyEntryColumn.entry_unitname, PropertyEntryColumn.role_letter);
            }
        }
        /// <summary>
        /// Builds the diagram model from an object with children
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns></returns>
        public override diagramModel buildModel(diagramModel output, IObjectWithPathAndChildSelector source)
        {
            if (source == null)
            {
                throw new ArgumentNullException("can-t build model :: source is null" + "Diagram = source is null");
            }
            if (output == null)
            {
                output = new diagramModel("", "", diagramDirectionEnum.LR);
                if (source is IObjectWithNameAndDescription)
                {
                    IObjectWithNameAndDescription source_IObjectWithNameAndDescription = (IObjectWithNameAndDescription)source;
                    output.name        = source_IObjectWithNameAndDescription.name;
                    output.description = source_IObjectWithNameAndDescription.description;
                }
            }

            diagramNode parent = buildNode(output, source);
            //parent.relatedObject = source;

            List <diagramNode> childNodes = new List <diagramNode>();

            childNodes = buildChildren(output, parent, source, diagramNodeShapeEnum.normal, diagramLinkTypeEnum.normal, true);
            int c = 1;

            while (childNodes.Any())
            {
                c++;
                if (c > childDepthLimit)
                {
                    break;
                }
                List <diagramNode> newChildNodes = new List <diagramNode>();
                foreach (diagramNode childNode in childNodes)
                {
                    if (childNode.relatedObject is IEnumerable)
                    {
                        newChildNodes.AddRange(buildChildren(output, childNode, childNode.relatedObject as IEnumerable, diagramNodeShapeEnum.normal, diagramLinkTypeEnum.normal, true));
                    }
                }

                childNodes = newChildNodes;
            }

            return(output);
        }
Exemple #5
0
        /// <summary>
        /// Sets the item.
        /// </summary>
        /// <param name="pi">The pi.</param>
        protected void setItem(PropertyInfo pi)
        {
            basicDisplayItem displayInfo = new basicDisplayItem(pi);

            bdis.Add(pi, displayInfo);

            if (displayGroup == null)
            {
                displayGroup = displayGroups["Main"];
            }

            if (displayInfo.attributes.ContainsKey(imbAttributeName.measure_displayGroup))
            {
                displayGroup = displayGroups[displayInfo.attributes.getMessage(imbAttributeName.measure_displayGroup, "Main")];

                if (displayGroup.description.isNullOrEmptyString())
                {
                    displayGroup.description = displayInfo.attributes.getMessage(imbAttributeName.measure_displayGroupDescripton, ".");
                }
            }
            else
            {
                //pi.getAttributeValueOrDefault<DescriptionAttribute>(displayGroup, pi)
            }

            Int32 priority = displayInfo.attributes.getMessage <Int32>(imbAttributeName.viewPriority, 100);

            calcGroupId = displayInfo.attributes.getMessage <Int32>(imbAttributeName.measure_calcGroup, calcGroupId);

            Object tmp = pi.PropertyType.getInstance();

            if (tmp is IObjectWithNameAndDescription)
            {
                IObjectWithNameAndDescription tmp_IObjectWithName = (IObjectWithNameAndDescription)tmp;
                tmp_IObjectWithName.name        = displayInfo.displayName;
                tmp_IObjectWithName.description = displayInfo.description;
            }

            if (tmp is IValueWithImportanceInfo)
            {
                IValueWithImportanceInfo tmp_IValueWithImportanceInfo = (IValueWithImportanceInfo)tmp;
                tmp_IValueWithImportanceInfo.relevance = displayInfo.attributes.getMessage <dataPointImportance>(imbAttributeName.measure_important, dataPointImportance.normal);
            }

            if (tmp is IMeasure)
            {
                IMeasure im = (IMeasure)tmp;

                im.isAlarmTurnedOn = displayInfo.attributes.ContainsKey(imbAttributeName.measure_setAlarm);
                im.valueRange.setValueRange(displayInfo.attributes.getMessage <aceRangeConfig>(imbAttributeName.measure_setRange));
                im.alarmCriteria.setCriteria(displayInfo.attributes.getMessage <aceCriterionConfig>(imbAttributeName.measure_setAlarm));

                im.metaModelName   = displayInfo.attributes.getMessage(imbAttributeName.measure_metaModelName, im.name);
                im.metaModelPrefix = displayInfo.attributes.getMessage(imbAttributeName.measure_metaModelPrefix, "MN");

                im.doUnitOptimization = displayInfo.attributes.getMessage <Boolean>(imbAttributeName.measure_optimizeUnit, false);

                Tuple <Enum, String, String, String, String> tup = displayInfo.attributes.getMessageObj(imbAttributeName.measure_setRole) as Tuple <Enum, String, String, String, String>;
                if (tup != null)
                {
                    //im.setCustomRoleEntry(bDI.attributes.getMessageObj(imbAttributeName.measure_setRole) as Tuple<Enum, String, String, String, String>)
                    im.info.unit = im.getUnitEntry(displayInfo.attributes.getMessage <measureSystemUnitEntry>(imbAttributeName.measure_setUnit));
                    im.info.role = im.getRoleEntry(displayInfo.attributes.getMessage <measureSystemUnitEntry>(imbAttributeName.measure_setRole));
                }

                //displayGroup.AddAtEnd(im);

                //calcGroups[calcGroupId].AddAtEnd(im);
            }

            //Add(pi.Name, tmp);
        }
Exemple #6
0
        /// <summary>
        /// Deserializes the data table.
        /// </summary>
        /// <param name="filename">The filename or filepath.</param>
        /// <param name="format">The format to read from</param>
        /// <param name="directory">The directory (if filename was supplied and not full filepath)</param>
        /// <param name="table">The table.</param>
        /// <param name="resources">Supports: IObjectWithNameAndDescription</param>
        /// <returns></returns>
        /// <exception cref="dataException">
        /// File path not accessable: " + filepath - null - null - deserializeDataTable
        /// or
        /// Deserialization error - imbDataTableExtensions->deserialize
        /// </exception>
        /// <exception cref="NotImplementedException"></exception>
        public static DataTable deserializeDataTable(this string filename, dataTableExportEnum format, folderNode directory = null, DataTable table = null, params object[] resources)
        {
            dataTableIOFlags iOFlags = resources.GetIOFlags();

            string   output   = "";
            string   filepath = "";
            FileInfo fileInfo = null;

            if (Path.IsPathRooted(filename))
            {
                filepath = filename;
            }
            else
            {
                if (directory == null)
                {
                    directory = new DirectoryInfo(Directory.GetCurrentDirectory());
                }
                filepath = directory.pathFor(filename, getWritableFileMode.existing, table.GetDescription());
            }

            if (!File.Exists(filepath))
            {
                throw new dataException("File path not accessable: " + filepath, null, null, "deserializeDataTable");
            }

            fileInfo = new FileInfo(filepath);

            if (table == null)
            {
                table = new DataTable();
            }

            IObjectWithNameAndDescription ownerWithName = resources.getFirstOfType <IObjectWithNameAndDescription>(false, null, true);

            if (ownerWithName == null)
            {
                table.TableName = Path.GetFileNameWithoutExtension(filepath);
            }
            else
            {
                table.TableName = ownerWithName.name;

                table.ExtendedProperties.Add(templateFieldDataTable.data_tabledesc, ownerWithName.description);
            }
            switch (format)
            {
            case dataTableExportEnum.csv:
                // <---------------- postoji vec u ekstenzijama CSV resenje
                StreamReader sr = new StreamReader(fileInfo.FullName);

                throw new NotImplementedException();

                //var csvr = new CsvReader(sr);

                //    csvr.ReadHeader();

                //    csvr.Configuration.WillThrowOnMissingField = false;

                //    foreach (string column in csvr.FieldHeaders)
                //    {
                //        var DataColumn = table.Columns.Add(column.Replace("__", "_"));

                //    }

                //while (csvr.Read())
                //{
                //    var row = table.NewRow();
                //    foreach (DataColumn column in table.Columns)
                //    {
                //        string vl = csvr.GetField(column.DataType, column.ColumnName).toStringSafe();
                //        vl = vl.Replace(".", "");
                //        vl = vl.Replace(",", ".");
                //        row[column.ColumnName] = vl;
                //    }
                //    table.Rows.Add(row);
                //}

                /*
                 * IEnumerable<DataRow> rows = csvr.GetRecords<DataRow>();
                 * foreach (DataRow dr in rows)
                 * {
                 *  DataRow tdr = table.NewRow();
                 *  foreach (DataColumn dc in table.Columns)
                 *  {
                 *      tdr[dc] = dr[dc.ColumnName];
                 *  }
                 *  table.Rows.Add(tdr);
                 * }*/

                break;

            case dataTableExportEnum.excel:
                try
                {
                    using (ExcelPackage pck = new ExcelPackage(fileInfo))
                    {
                        var dts = pck.ToDataSet(iOFlags.HasFlag(dataTableIOFlags.firstRowColumnNames));
                        table = dts.Tables.imbFirstSafe() as DataTable;
                    }
                }
                catch (Exception ex)
                {
                    throw new dataException("Deserialization error", ex, table, "imbDataTableExtensions->deserialize");
                }

                /*
                 *
                 *  // <--- OVO POSTOJI DOLE U KOMANDI toDataSet
                 *  using (ExcelPackage pck = new ExcelPackage(fileInfo))
                 * {
                 *  ExcelWorksheet ws = pck.Workbook.Worksheets[0];
                 *  //ws.GetValue(0,)
                 *  Int32 c = 1;
                 *  Int32 r = 1;
                 *  Boolean headersOk = false;
                 *  List<String> headers = new List<string>();
                 *  String head = ws.GetValue(r, c).toStringSafe();
                 *
                 *  for (int i = 1; i < ws.Dimension.Columns; i++)
                 *  {
                 *      DataColumn dc = new DataColumn(c.toOrdinalLetter(false));
                 *      head = ws.GetValue(r, c).toStringSafe();
                 *      if (head.isWord())
                 *      {
                 *          headers.Add(head);
                 *      }
                 *
                 *      dc.ExtendedProperties.Add(templateFieldDataTable.col_id, i);
                 *      dc.ExtendedProperties.Add(templateFieldDataTable.col_name, i.toOrdinalLetter());
                 *      table.Columns.Add(dc);
                 *      c++;
                 *  }
                 *
                 *  if (headers.Count() >= ws.Dimension.Columns) headersOk = true;
                 *
                 *  if (headersOk)
                 *  {
                 *      c = 0;
                 *      foreach (DataColumn dc in table.Columns)
                 *      {
                 *          dc.Caption = headers[c];
                 *          c++;
                 *      }
                 *      r++;
                 *  }
                 *
                 *  for (int i = r; i < ws.Dimension.Rows; i++)
                 *  {
                 *      DataRow dr = table.NewRow();
                 *      foreach (DataColumn dc in table.Columns)
                 *      {
                 *          dr[dc] = ws.GetValue(i, dc.Ordinal);
                 *      }
                 *      table.Rows.Add(dr);
                 *      r++;
                 *  }
                 *  }
                 */
                output = fileInfo.FullName;
                break;

            case dataTableExportEnum.json:

                string json = openBase.openFileToString(filepath, true);
                table = objectSerialization.DeserializeJson <DataTable>(json);

                break;

            case dataTableExportEnum.markdown:
                throw new NotImplementedException();
                break;

            case dataTableExportEnum.xml:
                string xml = openBase.openFileToString(filepath, true);
                table.ReadXml(xml);
                break;

            default:
                break;
            }

            table.NormalizeColumnNames();
            return(table);
        }