示例#1
0
        public override void Init( IProject project, IDependencyManager dependencies, IBuildAggregator aggregator )
        {
            base.Init( project, dependencies, aggregator );
            Model model = project.Model;

            EntityClass quotes = new EntityClass();
            quotes.Name = "QuoteOfTheDay";
            quotes.Visibility = "public";

            EntityField id = new EntityField();
            id.Name = "id";
            id.IsPreview = true;
            id.IsPrimaryKey = true;
            id.Type = IntrinsicTypes.Create("System.Int32");
            quotes.Fields.Add(id);

            EntityField quote = new EntityField();
            quote.Name = "quote";
            quote.Represents = true;
            quote.IsPreview = true;
            quote.Type = IntrinsicTypes.Create( "System.String" );
            quote.IsRequired = true;
            quote.MaxSize = 1000;
            quotes.Fields.Add(quote);

            model.Add(quotes);
        }
示例#2
0
        private EntityClass CreateLogger()
        {
            Entity intEntity = IntrinsicTypes.Create( "System.Int32" );
            Entity stringEntity = IntrinsicTypes.Create( "System.String" );
            Entity dateTimeEntity = IntrinsicTypes.Create( "System.DateTime" );

            EntityClass logger = new EntityClass();
            logger.Name = "RequestLogger";
            logger.Visibility = "public";

            EntityField field = new EntityField();
            field.Name = "id";
            field.IsPrimaryKey = true;
            field.IsPreview = true;
            field.Type = intEntity;
            logger.Fields.Add(field);

            field = new EntityField();
            field.Name = "url";
            field.IsPreview = true;
            field.Represents = true;
            field.Type = stringEntity;
            field.MaxSize = 1000;
            logger.Fields.Add(field);

            field = new EntityField();
            field.Name = "date";
            field.IsPreview = true;
            field.Type = dateTimeEntity;
            logger.Fields.Add(field);

            field = new EntityField();
            field.Name = "requestTime";
            field.IsPreview = true;
            field.Type = intEntity;
            logger.Fields.Add(field);

            field = new EntityField();
            field.Name = "referrer";
            field.Type = stringEntity;
            field.IsRequired = false;
            field.MaxSize = 1000;
            logger.Fields.Add(field);

            field = new EntityField();
            field.Name = "ip";
            field.Type = stringEntity;
            field.MaxSize = 15;
            logger.Fields.Add(field);

            field = new EntityField();
            field.Name = "userAgent";
            field.Type = stringEntity;
            field.MaxSize = 1500;
            logger.Fields.Add(field);

            return logger;
        }
示例#3
0
文件: Globals.cs 项目: zi-yu/midgard
        private static void BuildClassTestModel()
        {
            EntityInterface iPerson = GetInterface();
            EntityClass parent = new EntityClass();
            parent.Name = "Pai";
            EntityClass category = new EntityClass();
            category.Name = "Category";
            category.Visibility = "public";
            category.Interfaces.Add(iPerson);
            category.Parent = parent;

            EntityField field = new EntityField();
            field.Name = "Id";
            field.Visibility = "protected";
            field.IsPrimaryKey = true;
            field.Type = new Int();
            category.Fields.Add(field);

            field = new EntityField();
            field.Name = "Description";
            field.IsRequired = true;
            field.MaxSize = 500;
            field.Type = new Loki.DataRepresentation.IntrinsicEntities.String();
            category.Fields.Add(field);
            category.IsAbstract = true;
            category.Persistable = true;
            category.Visibility = "protected";

            EntityMethod init = new EntityMethod();
            init.Name = "Init";

            category.Methods.Add(init);

            Model list = new Model();
            list.Add(category);
            classes.Model = list;
        }
示例#4
0
文件: LiveChat.cs 项目: zi-yu/midgard
        private void BuildChannelEntryConnection(EntityClass channel, EntityClass entry)
        {
            EntityField channelEntries = new EntityField("entries");
            channelEntries.Type = channel;
            channelEntries.Mult = Multiplicity.OneToMany;
            channel.Fields.Add(channelEntries);

            EntityField entryChannel = new EntityField("Channel");
            entryChannel.Type = channel;
            entryChannel.Mult = Multiplicity.ManyToOne;
            entry.Fields.Add(entryChannel);
        }
示例#5
0
 private void ResolveReferenceMultiplicity( EntityField field )
 {
     if( field.ReferenceType != null ) {
         switch( field.Mult ) {
             case Multiplicity.OneToMany:
                 field.ReferenceType.Mult = Multiplicity.ManyToOne;
                 break;
             case Multiplicity.ManyToOne:
                 field.ReferenceType.Mult = Multiplicity.OneToMany;
                 break;
             default:
                 field.ReferenceType.Mult = field.Mult;
                 break;
         }
     }
 }
示例#6
0
        private EntityField CreateEntityField( XmlNode element )
        {
            EntityField field = new EntityField();

            if( element.Attributes["xmi:id"] != null ) {
                field.Id = element.Attributes["xmi:id"].Value;
            }

            if( element.Attributes["name"] != null ) {
                field.Name = element.Attributes["name"].Value;
            }

            if( element.Attributes["visibility"] != null ) {
                field.Visibility = element.Attributes["visibility"].Value;
            }

            if( element.Attributes["ownerScope"] != null && element.Attributes["ownerScope"].Value.CompareTo( "instance" ) != 0 ) {
                field.FieldModifier += "static";
            }

            return field;
        }
示例#7
0
 private void AddIds()
 {
     foreach( IEntity entity in project.Model ) {
         if( entity is EntityClass ) {
             EntityClass e = entity as EntityClass;
             if (!e.RootEntity) {
                 // Derived classes inherit the Id from the parent
                 continue;
             }
             EntityField field = new EntityField();
             field.Name = "id";
             field.IsPrimaryKey = true;
             field.FieldModifier = "private";
             field.Type = new Loki.DataRepresentation.IntrinsicEntities.Int();
             e.Fields.Insert( 0, field );
         }
     }
 }
示例#8
0
文件: Controls.cs 项目: zi-yu/midgard
        private void GenerateEntityFieldEditorDesigner(Entity entity, EntityField field)
        {
            string output = GetRelativeOutputDir(entity.Name + field.PropertyName + "EditorDesigner.cs", "Controls/" + entity.Name + "/Designer/");
            Aggregator.RegisterFile(ComponentType.WebUserInterface.ToString(), output);

            Dictionary<string, object> variables = new Dictionary<string, object>();
            variables.Add("namespace", Namespace);
            variables.Add("entity", entity);
            variables.Add("field", field);
            variables.Add("DALNamespace", Project.Name + "." + ComponentType.DataAccessLayer.ToString());
            variables.Add("CoreNamespace", Project.Name + "." + ComponentType.Core.ToString());

            Templates.Generate(GetResource("Designer/EditorDesigner.cs.vtl"), output, variables);
            Log.Info("Generated `{0}'", output);
        }
示例#9
0
文件: LiveChat.cs 项目: zi-yu/midgard
        private void BuildParticipants(EntityClass participants)
        {
            EntityField participantsId = new EntityField("id");
            participantsId.IsPreview = true;
            participantsId.IsRequired = true;
            participantsId.IsPrimaryKey = true;
            participantsId.Represents = true;
            participantsId.Type = intEntity;
            participants.Fields.Add(participantsId);

            EntityClass principal = (EntityClass)Project.Model.GetByName("Principal");

            EntityField principalRef = new EntityField("principal");
            principalRef.Mult = Multiplicity.ManyToOne;
            principalRef.Type = principal;
            participants.Fields.Add(principalRef);

            EntityField participantRef = new EntityField("Participants");
            participantRef.Mult = Multiplicity.OneToMany;
            participantRef.Type = participants;
            principal.Fields.Add(participantRef);
        }
示例#10
0
文件: Globals.cs 项目: zi-yu/midgard
        private static void BuildSmsTestModel()
        {
            EntityField field = null;

            /** User **/
            EntityClass user = new EntityClass();
            user.Name = "Principal";
            user.Visibility = "public";

            field = new EntityField();
            field.Name = "Id";
            field.IsPrimaryKey = true;
            field.Type = new Int();
            user.Fields.Add(field);

            /** IDescription Definition **/
            EntityInterface iDescription = new EntityInterface();
            iDescription.Name = "IDescription";
            iDescription.Visibility = "public";
            EntityMethod getDescription = new EntityMethod();
            getDescription.Name = "GetDescription";
            EntityParameter param = new EntityParameter();
            param.IsReturn = true;
            param.Type = IntrinsicTypes.Create( "System.String" );
            getDescription.ReturnEntity = param;
            iDescription.Methods.Add(getDescription);

            /** Category Definition **/

            EntityClass category = new EntityClass();
            category.Name = "Category";
            category.Visibility = "public";
            //category.Interfaces.Add(iDescription);

            field = new EntityField();
            field.Name = "Id";
            field.IsPrimaryKey = true;
            field.Type = new Int();
            category.Fields.Add(field);

            field = new EntityField();
            field.Name = "Description";
            field.IsRequired = true;
            field.MaxSize = 500;
            field.Type = new Loki.DataRepresentation.IntrinsicEntities.String();
            category.Fields.Add(field);

            /** Sms Definition **/

            EntityClass message = new EntityClass();
            message.Name = "SmsBase";
            message.IsAbstract = true;
            message.Visibility = "public";
            //message.Interfaces.Add(iDescription);

            field = new EntityField();
            field.Name = "Id";
            field.IsPrimaryKey = true;
            field.Type = new Int();
            message.Fields.Add(field);

            field = new EntityField();
            field.Name = "Description";
            field.IsRequired = true;
            field.MaxSize = 500;
            field.Default = "No Description";
            field.Type = new Loki.DataRepresentation.IntrinsicEntities.String();
            message.Fields.Add(field);

            field = new EntityField();
            field.Name = "Category";
            field.Type = category;
            field.Mult = Multiplicity.ManyToOne;
            field.IsRequired = true;
            message.Fields.Add(field);

            field = new EntityField();
            field.Name = "Principal";
            field.Type = user;
            field.Mult = Multiplicity.ManyToOne;
            field.IsRequired = true;
            message.Fields.Add(field);

            field = new EntityField();
            field.Name = "Messages";
            field.Type = message;
            field.Mult = Multiplicity.OneToMany;
            field.InfoOnly = true;
            user.Fields.Add(field);

            field = new EntityField();
            field.Name = "Messages";
            field.Type = message;
            field.InfoOnly = true;
            field.Mult = Multiplicity.OneToMany;
            category.Fields.Add(field);

            /** ImageSms **/
            EntityClass imageSms = new EntityClass();
            imageSms.Name = "ImageSms";
            imageSms.Visibility = "public";
            imageSms.Parent = message;

            field = new EntityField();
            field.Name = "ImageUrl";
            field.Type = new Loki.DataRepresentation.IntrinsicEntities.String();
            field.IsRequired = true;
            field.Default = "#";
            imageSms.Fields.Add(field);

            /** TextSms **/
            EntityClass textSms = new EntityClass();
            textSms.Name = "TextSms";
            textSms.Visibility = "public";
            textSms.Parent = message;

            field = new EntityField();
            field.Name = "Text";
            field.Type = new Loki.DataRepresentation.IntrinsicEntities.String();
            field.IsRequired = true;
            field.Default = "Empty";
            textSms.Fields.Add(field);

            /** Setting up project **/
            Model list = new Model();
            list.Add(category);
            list.Add(iDescription);
            list.Add(user);
            list.Add(message);
            list.Add(imageSms);
            list.Add(textSms);
            smsTestModel.Model = list;
        }
示例#11
0
        private void WriteEntityField(StreamWriter writer, EntityField field)
        {
            writer.Write("\t\t<column name=\"{0}\" ", field.Name);
            if (field.IsPrimaryKey) {
                writer.Write("primaryKey=\"true\" ");
            }
            if (field.IsRequired) {
                writer.Write("required=\"true\" ");
            }
            if (field.HasDefault) {
                writer.Write("default=\"{0}\" ", field.Default);
            }
            writer.Write("type=\"{0}\" ", GetEntityType(field));

            writer.WriteLine("/>");
        }
示例#12
0
 private string GetEntityType(EntityField field)
 {
     if (field.Type.IsIntrinsic) {
         object obj = IntrinsicTypeMapping[field.Type.AccessInterface];
         if (obj == null) {
             throw new LokiException("Can't map intrinsic `{0}' to a Neo type", field.Type.Name);
         }
         return obj.ToString();
     }
     // é chave estrangeira
     foreign.Add(field);
     return IntrinsicTypeMapping["int"];
 }
示例#13
0
        private void SetupConnection(EntityClass logger, EntityClass principal)
        {
            EntityField principalRef = new EntityField();
            principalRef.Name = "principal";
            principalRef.IsRequired = false;
            principalRef.Mult = Multiplicity.ManyToOne;
            principalRef.Type = principal;
            logger.Fields.Add(principalRef);

            EntityField loggerRef = new EntityField();
            loggerRef.Name = "Requests";
            loggerRef.Type = logger;
            loggerRef.Mult = Multiplicity.OneToMany;
            principal.Fields.Add(loggerRef);
        }
示例#14
0
文件: LiveChat.cs 项目: zi-yu/midgard
        private void BuildChannelParticipantConnection(EntityClass channel, EntityClass participants)
        {
            EntityField channelParticipants = new EntityField("participants");
            channelParticipants.Type = participants;
            channelParticipants.Mult = Multiplicity.OneToMany;
            channel.Fields.Add(channelParticipants);

            EntityField participantChannel = new EntityField("Channel");
            participantChannel.Type = channel;
            participantChannel.Mult = Multiplicity.ManyToOne;
            participants.Fields.Add(participantChannel);
        }
示例#15
0
 public void AddField( EntityField field )
 {
     fields.Add(field);
 }
示例#16
0
文件: LiveChat.cs 项目: zi-yu/midgard
        private void BuildEntry(EntityClass entry)
        {
            EntityField id = new EntityField("id");
            id.IsPreview = true;
            id.IsRequired = true;
            id.Represents = true;
            id.IsPrimaryKey = true;
            id.Type = intEntity;
            entry.Fields.Add(id);

            EntityField text = new EntityField("text");
            text.IsPreview = false;
            text.Represents = false;
            text.Type = stringEntity;
            text.MaxSize = 3000;
            entry.Fields.Add(text);

            EntityField date = new EntityField("date");
            date.IsPreview = true;
            date.Type = dateTimeEntity;
            entry.Fields.Add(date);

            EntityClass principal = (EntityClass)Project.Model.GetByName("Principal");

            EntityField principalField = new EntityField("Principal");
            principalField.IsPreview = false;
            principalField.Represents = true;
            principalField.Type = principal;
            principalField.Mult = Multiplicity.ManyToOne;
            entry.Fields.Add(principalField);

            EntityField principalEntries = new EntityField("ChannelEntries");
            principalEntries.Type = entry;
            principalEntries.Mult = Multiplicity.OneToMany;
            principal.Fields.Add(principalEntries);
        }
示例#17
0
        public void ResolveReference( IEntityAttribute field )
        {
            if( field is EntityField && field.Type is EntityClass ) {
                EntityField e = (EntityField)field;
                if( e.ReferenceType == null && e.Type != null && e.Mult != Multiplicity.OneToOne ) {
                    EntityField reference = new EntityField();
                    reference.Name = e.Parent.Name;
                    reference.Type = e.Parent;
                    reference.InfoOnly = true;
                    reference.ReferenceType = e;

                    EntityClass entity = ((EntityClass)field.Type);
                    if( entity.HasField( reference.Name ) ) {
                        e.ReferenceType = entity.GetField( reference.Name );
                    }else{
                        e.ReferenceType = reference;
                        entity.AddField( reference );
                    }

                    ResolveReferenceMultiplicity( e );
                }
            }
        }
示例#18
0
文件: LiveChat.cs 项目: zi-yu/midgard
        private void BuildChannel(EntityClass channel)
        {
            EntityField channelId = new EntityField("id");
            channelId.IsRequired = true;
            channelId.IsPrimaryKey = true;
            channelId.IsPreview = true;
            channelId.Type = intEntity;
            channel.Fields.Add(channelId);

            EntityField channelName = new EntityField("name");
            channelName.IsPreview = true;
            channelName.IsRequired = true;
            channelName.Represents = true;
            channelName.Type = stringEntity;
            channel.Fields.Add(channelName);
        }
示例#19
0
 public void AddField(EntityField field)
 {
     fields.Add(field);
 }