예제 #1
0
        public static void CheckDataBlock(PropertyBlock block, CheckerEngine <PropertyRecord, Org.Neo4j.Consistency.report.ConsistencyReport_PropertyConsistencyReport> engine, RecordAccess records)
        {
            if (block.KeyIndexId < 0)
            {
                engine.Report().invalidPropertyKey(block);
            }
            else
            {
                engine.ComparativeCheck(records.PropertyKey(block.KeyIndexId), PropertyKey(block));
            }
            PropertyType type = block.ForceGetType();

            if (type == null)
            {
                engine.Report().invalidPropertyType(block);
            }
            else
            {
                switch (type.innerEnumValue)
                {
                case PropertyType.InnerEnum.STRING:
                    engine.ComparativeCheck(records.String(block.SingleValueLong), DynamicReference.String(block));
                    break;

                case PropertyType.InnerEnum.ARRAY:
                    engine.ComparativeCheck(records.Array(block.SingleValueLong), DynamicReference.Array(block));
                    break;

                default:
                    try
                    {
                        type.value(block, null);
                    }
                    catch (Exception)
                    {
                        engine.Report().invalidPropertyValue(block);
                    }
                    break;
                }
            }
        }