public static CreateObjectCommand Evaluate(IEngine engine, Command command) { if (command.Parameters.Count < 2) return null; if (command.Parameters[0].Name.ToLower() != "create") return null; if (command.Parameters[0].Value != null) return null; string name = command.Parameters[1].Name; if (string.IsNullOrEmpty(name)) return null; ISchemaService schemaService = engine.GetService<ISchemaService>(); if (!schemaService.HasClass(name)) return null; CreateObjectCommand createObjectCommand = new CreateObjectCommand(name); IList<Parameter> parameters = command.Parameters[1].Value as IList<Parameter>; if (parameters != null) { foreach (Parameter parameter in parameters) { if (schemaService.HasProperty(name, parameter.Name)) { createObjectCommand.Values[parameter.Name] = parameter.Value; } } } return createObjectCommand; }
public static UpdateObjectsCommand Evaluate(IEngine engine, Command command) { if (command.Parameters.Count < 3) return null; if (command.Parameters[0].Name.ToLower() != "update") return null; if (command.Parameters[0].Value != null) return null; string name = command.Parameters[1].Name; if (string.IsNullOrEmpty(name)) return null; ISchemaService schemaService = engine.GetService<ISchemaService>(); if (!schemaService.HasClass(name)) return null; if (command.Parameters[2].Name.ToLower() != "match") return null; IList<Parameter> match = command.Parameters[2].Value as IList<Parameter>; UpdateObjectsCommand updateObjectsCommand = new UpdateObjectsCommand(name); IList<Parameter> parameters = command.Parameters[1].Value as IList<Parameter>; if (parameters != null) { foreach (Parameter parameter in parameters) { if (schemaService.HasProperty(name, parameter.Name)) { updateObjectsCommand.Values[parameter.Name] = parameter.Value; } } } if (match != null) { foreach (Parameter parameter in match) { if (schemaService.HasProperty(name, parameter.Name)) { updateObjectsCommand.Match[parameter.Name] = parameter.Value; } } } return updateObjectsCommand; }
public static DisplayObjectsCommand Evaluate(IEngine engine, Command command) { if (command.Parameters.Count < 2) return null; bool list = false; switch (command.Parameters[0].Name.ToLower()) { case "display": case "show": break; case "list": list = true; break; default: return null; } if (command.Parameters[0].Value != null) return null; string name = command.Parameters[1].Name; if (string.IsNullOrEmpty(name)) return null; ISchemaService schemaService = engine.GetService<ISchemaService>(); if (!schemaService.HasClass(name)) return null; DisplayObjectsCommand displayObjectsCommand = new DisplayObjectsCommand(name, list); EvaluateMatch(command.Parameters[1].Value, name, schemaService, displayObjectsCommand); if (command.Parameters.Count > 2) { switch (command.Parameters[2].Name.ToLower()) { case "match": case "where": EvaluateMatch(command.Parameters[2].Value, name, schemaService, displayObjectsCommand); break; case "query": if (command.Parameters[2].Value != null) displayObjectsCommand.Where = command.Parameters[2].Value.ToString(); break; } } return displayObjectsCommand; }
public static CreateClassCommand Evaluate(Command command) { if (command.Parameters.Count < 3) return null; if (command.Parameters[0].Name.ToLower() != "create") return null; if (command.Parameters[0].Value != null) return null; if (command.Parameters[1].Name.ToLower() != "class") return null; if (command.Parameters[1].Value != null) return null; string name = command.Parameters[2].Name; if (string.IsNullOrEmpty(name)) return null; // register exception... CreateClassCommand createClassCommand = new CreateClassCommand(name); IList<Parameter> parameters = command.Parameters[2].Value as IList<Parameter>; if (parameters != null) { foreach (Parameter parameter in parameters) { switch (parameter.Name.ToLower()) { case "base": createClassCommand.BaseClass = parameter.Value.ToString(); break; case "table": case "tablename": createClassCommand.TableName = parameter.Value.ToString(); break; } } } return createClassCommand; }
public static DeleteObjectsCommand Evaluate(IEngine engine, Command command) { if (command.Parameters.Count < 2) return null; if (command.Parameters[0].Name.ToLower() != "delete") return null; if (command.Parameters[0].Value != null) return null; string name = command.Parameters[1].Name; if (string.IsNullOrEmpty(name)) return null; ISchemaService schemaService = engine.GetService<ISchemaService>(); if (!schemaService.HasClass(name)) return null; DeleteObjectsCommand deleteObjectsCommand = new DeleteObjectsCommand(name); EvaluateMatch(command.Parameters[1].Value, name, schemaService, deleteObjectsCommand); if (command.Parameters.Count > 2) { switch (command.Parameters[2].Name.ToLower()) { case "match": case "where": EvaluateMatch(command.Parameters[2].Value, name, schemaService, deleteObjectsCommand); break; case "query": if (command.Parameters[2].Value != null) deleteObjectsCommand.Where = command.Parameters[2].Value.ToString(); break; } } return deleteObjectsCommand; }
public ExecutionEventArgs(Command command) { this.Command = command; }
public static CreatePropertyCommand Evaluate(IEngine engine, Command command) { if (command.Parameters.Count < 3) return null; if (command.Parameters[0].Name.ToLower() != "create") return null; if (command.Parameters[0].Value != null) return null; Multiplicity multiplicity = Multiplicity.None; switch (command.Parameters[1].Name.ToLower()) { case "property": case "relationship": break; case "one-one": case "oneone": case "one-to-one": case "onetoone": multiplicity = Multiplicity.OneToOne; break; case "one-many": case "onemany": case "one-to-many": case "onetomany": case "reference": multiplicity = Multiplicity.OneToMany; break; case "many-one": case "manyone": case "many-to-one": case "manytoone": case "list": multiplicity = Multiplicity.ManyToOne; break; case "many-many": case "manymany": case "many-to-many": case "manytomany": multiplicity = Multiplicity.ManyToMany; break; default: return null; } if (command.Parameters[1].Value != null) return null; string name = command.Parameters[2].Name; if (string.IsNullOrEmpty(name)) return null; // register exception... string[] parts = name.Split(".".ToCharArray()); if (parts.Length != 2) return null; // register exception... string className = parts[0]; string propertyName = parts[1]; if (string.IsNullOrEmpty(className)) return null; // register exception... if (string.IsNullOrEmpty(propertyName)) return null; // register exception... ISchemaService schemaService = engine.GetService<ISchemaService>(); IObjectService objectService = engine.GetService<IObjectService>(); CreatePropertyCommand createPropertyCommand = new CreatePropertyCommand(className, propertyName); createPropertyCommand.Multiplicity = multiplicity; createPropertyCommand.Type = typeof(string); createPropertyCommand.StringLength = 255; bool list = false; IList<Parameter> parameters = command.Parameters[2].Value as IList<Parameter>; if (parameters != null) { foreach (Parameter parameter in parameters) { if (parameter.Value != null) { switch (parameter.Name.ToLower()) { case "type": if (schemaService.HasClass(parameter.Value.ToString())) createPropertyCommand.Type = objectService.GetTypeByName(parameter.Value.ToString()); else createPropertyCommand.Type = Type.GetType(parameter.Value.ToString()); break; case "list": list = true; break; case "multiplicity": case "ref": case "reference": case "referencetype": if (createPropertyCommand.Multiplicity == Multiplicity.None) { string refType = parameter.Value.ToString(); switch (refType.ToLower()) { case "one-one": case "oneone": case "one-to-one": case "onetoone": createPropertyCommand.Multiplicity = Multiplicity.OneToOne; break; case "one-many": case "onemany": case "one-to-many": case "onetomany": createPropertyCommand.Multiplicity = Multiplicity.OneToMany; break; case "many-one": case "manyone": case "many-to-one": case "manytoone": createPropertyCommand.Multiplicity = Multiplicity.ManyToOne; break; case "many-many": case "manymany": case "many-to-many": case "manytomany": createPropertyCommand.Multiplicity = Multiplicity.ManyToMany; break; default: createPropertyCommand.Multiplicity = Multiplicity.None; break; } } list = true; break; case "length": createPropertyCommand.StringLength = Convert.ToInt32(parameter.Value.ToString()); break; case "column": case "columnname": createPropertyCommand.ColumnName = parameter.Value.ToString(); break; case "null": case "nullable": createPropertyCommand.Nullable = Convert.ToBoolean(parameter.Value.ToString()); break; case "inverse": createPropertyCommand.Inverse = parameter.Value.ToString(); break; } } } } if (createPropertyCommand.Multiplicity == Multiplicity.None) { if (schemaService.HasClass(objectService.GetTypeName(createPropertyCommand.Type))) { if (list) createPropertyCommand.Multiplicity = Multiplicity.ManyToOne; else createPropertyCommand.Multiplicity = Multiplicity.OneToMany; } } if (createPropertyCommand.Multiplicity != Multiplicity.None) { if (string.IsNullOrEmpty(createPropertyCommand.Inverse)) createPropertyCommand.Inverse = "InverseOf" + name; } return createPropertyCommand; }