Beispiel #1
0
        private static IList <IDictionary <string, object> > Constraints(TokenRead tokens, SchemaRead schemaRead, Anonymizer anonymizer)
        {
            IList <IDictionary <string, object> > constraints = new List <IDictionary <string, object> >();

            SilentTokenNameLookup tokenLookup = new SilentTokenNameLookup(tokens);

            IEnumerator <ConstraintDescriptor> iterator = schemaRead.ConstraintsGetAll();

            while (iterator.MoveNext())
            {
                ConstraintDescriptor         constraint = iterator.Current;
                EntityType                   entityType = constraint.Schema().entityType();
                IDictionary <string, object> data       = new Dictionary <string, object>();

                data["properties"] = Map(constraint.Schema().PropertyIds, id => anonymizer.PropertyKey(tokenLookup.PropertyKeyGetName(id), id));
                data["type"]       = ConstraintType(constraint);
                int entityTokenId = constraint.Schema().EntityTokenIds[0];

                switch (entityType.innerEnumValue)
                {
                case EntityType.InnerEnum.NODE:
                    data["label"] = anonymizer.Label(tokenLookup.LabelGetName(entityTokenId), entityTokenId);
                    constraints.Add(data);
                    break;

                case EntityType.InnerEnum.RELATIONSHIP:
                    data["relationshipType"] = anonymizer.RelationshipType(tokenLookup.RelationshipTypeGetName(entityTokenId), entityTokenId);
                    constraints.Add(data);
                    break;

                default:
                    break;
                }
            }

            return(constraints);
        }
Beispiel #2
0
        private ConstraintDefinition AsConstraintDefinition(ConstraintDescriptor constraint, TokenRead tokenRead)
        {
            // This was turned inside out. Previously a low-level constraint object would reference a public enum type
            // which made it impossible to break out the low-level component from kernel. There could be a lower level
            // constraint type introduced to mimic the public ConstraintType, but that would be a duplicate of it
            // essentially. Checking instanceof here is OKish since the objects it checks here are part of the
            // internal storage engine API.
            SilentTokenNameLookup lookup = new SilentTokenNameLookup(tokenRead);

            if (constraint is NodeExistenceConstraintDescriptor || constraint is NodeKeyConstraintDescriptor || constraint is UniquenessConstraintDescriptor)
            {
                SchemaDescriptor schemaDescriptor = constraint.Schema();
                int[]            entityTokenIds   = schemaDescriptor.EntityTokenIds;
                Label[]          labels           = new Label[entityTokenIds.Length];
                for (int i = 0; i < entityTokenIds.Length; i++)
                {
                    labels[i] = label(lookup.LabelGetName(entityTokenIds[i]));
                }
//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
                string[] propertyKeys = Arrays.stream(schemaDescriptor.PropertyIds).mapToObj(lookup.propertyKeyGetName).toArray(string[] ::new);
                if (constraint is NodeExistenceConstraintDescriptor)
                {
                    return(new NodePropertyExistenceConstraintDefinition(_actions, labels[0], propertyKeys));
                }
                else if (constraint is UniquenessConstraintDescriptor)
                {
                    return(new UniquenessConstraintDefinition(_actions, new IndexDefinitionImpl(_actions, null, labels, propertyKeys, true)));
                }
                else
                {
                    return(new NodeKeyConstraintDefinition(_actions, new IndexDefinitionImpl(_actions, null, labels, propertyKeys, true)));
                }
            }
            else if (constraint is RelExistenceConstraintDescriptor)
            {
                RelationTypeSchemaDescriptor descriptor = ( RelationTypeSchemaDescriptor )constraint.Schema();
                return(new RelationshipPropertyExistenceConstraintDefinition(_actions, withName(lookup.RelationshipTypeGetName(descriptor.RelTypeId)), lookup.PropertyKeyGetName(descriptor.PropertyId)));
            }
            throw new System.ArgumentException("Unknown constraint " + constraint);
        }