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; }