Esempio n. 1
0
        void Apply()
        {
            relationship = new Schemas.Relationship(Model);

            string neo4jType;
            string relationshipName;

            switch (SourceType)
            {
            case PropertyType.None:
                throw new NotSupportedException(string.Format("Source Property Type {0} is currently not supported", SourceType));

            case PropertyType.Lookup:
                switch (TargetType)
                {
                case PropertyType.None:
                    relationshipName = string.Concat(SourceName.ToUpper(), "_HAS_", TargetName.ToUpper());
                    neo4jType        = string.Concat("HAS_", TargetName.ToUpper());

                    relationship.InProperty     = TargetName;
                    relationship.InPropertyType = PropertyType.Lookup.ToString();

                    break;

                case PropertyType.Lookup:
                    relationshipName = string.Concat(SourceName.ToUpper(), "_IS_", TargetName.ToUpper());
                    neo4jType        = string.Concat("IS_", TargetName.ToUpper());

                    relationship.InProperty     = TargetName;
                    relationship.InPropertyType = PropertyType.Lookup.ToString();

                    relationship.OutProperty     = SourceName;
                    relationship.OutPropertyType = PropertyType.Lookup.ToString();
                    break;

                case PropertyType.Collection:
                    relationshipName = string.Concat(SourceName.ToUpper(), "_VALID_FOR_", TargetName.ToUpper());
                    neo4jType        = string.Concat("VALID_FOR_", TargetName.ToUpper());

                    relationship.InProperty     = TargetName;
                    relationship.InPropertyType = PropertyType.Lookup.ToString();

                    relationship.OutProperty     = SourceName.ToPlural();
                    relationship.OutPropertyType = PropertyType.Collection.ToString();
                    break;

                default:
                    throw new NotSupportedException(string.Format("Target Property Type value {0} is currently not supported", TargetType));
                }
                break;

            case PropertyType.Collection:
                switch (TargetType)
                {
                case PropertyType.None:
                    relationshipName = string.Concat(SourceName.ToUpper(), "_CONTAINS_", TargetName.ToUpper());
                    neo4jType        = string.Concat("CONTAINS_", TargetName.ToUpper());

                    relationship.InProperty     = TargetName.ToPlural();
                    relationship.InPropertyType = PropertyType.Collection.ToString();
                    break;

                case PropertyType.Lookup:
                    relationshipName = string.Concat(SourceName.ToUpper(), "_CONTAINS_", TargetName.ToUpper());
                    neo4jType        = string.Concat("CONTAINS_", TargetName.ToUpper());

                    relationship.InProperty     = TargetName.ToPlural();
                    relationship.InPropertyType = PropertyType.Collection.ToString();

                    relationship.OutProperty     = SourceName;
                    relationship.OutPropertyType = PropertyType.Lookup.ToString();
                    break;

                case PropertyType.Collection:
                    relationshipName = string.Concat(SourceName.ToUpper(), "_CONTAINS_", TargetName.ToUpper());
                    neo4jType        = string.Concat("CONTAINS_", TargetName.ToUpper());

                    relationship.InProperty     = TargetName.ToPlural();
                    relationship.InPropertyType = PropertyType.Collection.ToString();

                    relationship.OutProperty     = SourceName.ToPlural();
                    relationship.OutPropertyType = PropertyType.Collection.ToString();
                    break;

                default:
                    throw new NotSupportedException(string.Format("Target Property Type value {0} is currently not supported", TargetType));
                }
                break;

            default:
                throw new NotSupportedException(string.Format("Source Property Type {0} is currently not supported", SourceType));
            }

            lblCardinality.Text = GetRelationshipCardinality();

            if (cbAutoLabel.Checked == false)
            {
                return;
            }

            txtRelationshipName.Text = relationshipName;
            txtNeo4jName.Text        = neo4jType;
        }