Eagle Framework
ANEES-UR-REHMAN
Introduction
Domain Driven Application Plateform
• It develops any enterprise application for web with any kind of layout by only defining domain objects with meta model information.
Central Features
Rich Internet Application Domain Driven Architecture Modular Architecture Dynamic Application Generation Dynamic Bindable Form
Generation GWT/HTML5 based Application Dynamic In-memory Compiler
Central Features contd..
Rules Oriented Service Model JavaEE 6.0 compatible
Using CDI for service injection Easy and Fast to Develop and
MaintainConfigured and Controlled by
Meta Model Architecture
Defining Use case• @Actions(actions = {
@Action(actionType = ActionTypes.SUBMIT_ACTION, performerType = ActionPerformerType.JAVA, exeution= UserProfileAction.class), @Action(actionType = ActionTypes.SEARCH_ACTION, performerType = ActionPerformerType.JAVA, exeution = UserProfileSearchAction.class)})
• @DomainObject(domainObject = UsersBean.class, position = "1", groups={@Groups(displayOption=DisplayOptionType.CASCADE, group={@Group(name="User Credentials", position="2", displayOption=DisplayOptionType.TABBED, properties={"userRank","userRoles"})})})
• @ExceptDomainObjectPropertyPolicy(domainObject = UsersBean.class, genralPolicy = DomainPerpertiesAllowType.ALLOW_ALL, properties
= { @DomainProperties(property = "titles"), @DomainProperties(property="id"), @DomainProperties(property="address") })
• public class UserProfilePanel extends BaseComponentBuilder {
• private static final long serialVersionUID = 1L;
• public static final String COMPONENT_ID = UserProfilePanel.class.getName();
• @Override• public String getComponentIdentity() {• return COMPONENT_ID;• }• @Override• public String getFormTitle() {• return "User Profile";• }
Defining Properties for SearchResult Table
• Create the file with USECASEID.out and USECASEID.in to define the properties to take part in Searching and then populating in PaggedTable
– META-INF/search-table/Usecase_Id.in
Usecase_id.out
Defining Domain Object
• Component will defined by the return type of property, if not defined by annotation– For Number, BigDecimal, Integer => FormattedTextField– For String => TextField Component– For String with @Password => PasswordField
Component– For String with @RadioButton => Radio Group
Component– For String with @Tablle => Table Component– For Boolean => CheckBox Component– For java.util.Date => PopupDate Component– For Enumeration with @Enumerated => Combobox
Component (For Static Values)
Defining Domain Object contd..
• Component also can be defined by the Meta-Model Information– @ManyToMany => Table Component– @OneToMany => Table Component– @ManyToOne => Combobox Component (retrieved from
table)– @RadioButton => RadioButton Group Component– @Table => Table Component
• Component constraint information – @PropertyConstraints(isMandatory =
MandatoryType.TURE, maxLength = "8", inputCaseType = StringInputCaseType.UPPERCASE, textInputDataType = TextFiledInputDataType.ONLYALPHA)
Defining Domain Object contd..
• Component position can be defined by the Meta-Model Information
– @UiComponentPosition( positionColumn = "1", positionRow = "1", tableDisplayColumn= "1")
• Only 2 Columns are supported by the template – if more columns are required then Template must be modified accordingly…
Create Container for Use cases
• Create the container for usecases by extending BaseContainerBuilder.
• Register the usecase IDs with container.
• Please follow the example giving in eagle-coders-server-kernui.
Registering the Usecase
• The usecase must be registered to conf/ com.eagle.coders.common.ui.interfaces.IComponent file inside eagle-coders-server-kern project
• The container must be registered to conf/ com.eagle.coders.common.ui.component.IUseCasesContainer file inside eagle-coders-server-kern project
Modularity System
• Modularity is done by using Netbeanse org-openide-util.jar
• Above file must be in ear file or lib folder of deployable server
Thank You