made first demo almost fully working
This commit is contained in:
parent
2a0d992642
commit
01b3b5cc54
|
@ -58,8 +58,8 @@ zie tables statline.cbs.nl voor bs asielverzoeken nl
|
||||||
- Extjs
|
- Extjs
|
||||||
- Swing
|
- Swing
|
||||||
- WS
|
- WS
|
||||||
- SWT via SwingWT
|
- SWT
|
||||||
- JSF (met utr plugin)
|
- JSF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -167,34 +167,6 @@ public class BlogPost {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<servlet>
|
|
||||||
<name>vasc</name>
|
|
||||||
<class></class>
|
|
||||||
<property>admin=true</property>
|
|
||||||
<property>backend=extjs</property>
|
|
||||||
<property>path=/js/extjs/*</property>
|
|
||||||
</servlet>
|
|
||||||
<servlet-mapping>
|
|
||||||
<name>vasc</name>
|
|
||||||
<mapping>/vasc/*</mapping>
|
|
||||||
</servlet-mapping>
|
|
||||||
|
|
||||||
|
|
||||||
EmployeeDataSource dataSource = new EmployeeDataSource();
|
|
||||||
dataSource.setJdbcTemplate(new JdbcTemplate(employeeDataSource()));
|
|
||||||
FilteringPaginator filteringPaginator = new FilteringPaginator(dataSource, EmployeeReportObject.class);
|
|
||||||
JsfCrudAdapter adapter = new JsfCrudAdapter(filteringPaginator, (CrudController)empCrud().getController()){
|
|
||||||
public Serializable getEntity() {
|
|
||||||
Object object = ((Row)getModel().getRowData()).getObject();
|
|
||||||
EmployeeReportObject employeeReportObject = (EmployeeReportObject) object;
|
|
||||||
Employee employee = new Employee();
|
|
||||||
employee.setId(employeeReportObject.getId());
|
|
||||||
return employee;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return adapter;
|
|
||||||
|
|
||||||
EVt;
|
EVt;
|
||||||
|
|
||||||
<a4j:form id="blogForm" enctype="multipart/form-data">
|
<a4j:form id="blogForm" enctype="multipart/form-data">
|
||||||
|
@ -223,46 +195,8 @@ EVt;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings({ "unchecked", "serial" })
|
|
||||||
@Bean(scope = DefaultScopes.SESSION)
|
|
||||||
public JsfCrudAdapter empRecordCrud() {
|
|
||||||
EmployeeDataSource dataSource = new EmployeeDataSource();
|
|
||||||
dataSource.setJdbcTemplate(new JdbcTemplate(employeeDataSource()));
|
|
||||||
FilteringPaginator filteringPaginator = new FilteringPaginator(dataSource, EmployeeReportObject.class);
|
|
||||||
JsfCrudAdapter adapter = new JsfCrudAdapter(filteringPaginator, (CrudController)empCrud().getController()){
|
|
||||||
public Serializable getEntity() {
|
|
||||||
Object object = ((Row)getModel().getRowData()).getObject();
|
|
||||||
EmployeeReportObject employeeReportObject = (EmployeeReportObject) object;
|
|
||||||
Employee employee = new Employee();
|
|
||||||
employee.setId(employeeReportObject.getId());
|
|
||||||
return employee;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return adapter;
|
|
||||||
}
|
|
||||||
|
|
||||||
<a4j:form id="employeeListingForm">
|
|
||||||
<a4j:outputPanel ajaxRendered="true">
|
|
||||||
<h:panelGroup rendered="${empRecordCrud.controller.showForm}">
|
|
||||||
<crank:form
|
|
||||||
crud="${empRecordCrud.controller}"
|
|
||||||
parentForm="employeeListingForm"
|
|
||||||
propertyNames="firstName,lastName,numberOfPromotions,age,department" ajax="${true}" />
|
|
||||||
</h:panelGroup>
|
|
||||||
</a4j:outputPanel>
|
|
||||||
|
|
||||||
<crank:listing
|
|
||||||
jsfCrudAdapter="${empRecordCrud}"
|
|
||||||
propertyNames="firstName,lastName"
|
|
||||||
parentForm="employeeListingForm"
|
|
||||||
/>
|
|
||||||
</a4j:form>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h:form id="expListForm" rendered="#{controllerBean.showListing}">
|
<h:form id="expListForm" rendered="#{controllerBean.showListing}">
|
||||||
<crank:listing paginator="${paginators['Employee']}"
|
<vasc:listing paginator="${paginators['Employee']}"
|
||||||
jsfCrudAdapter="${cruds['Employee']}"
|
jsfCrudAdapter="${cruds['Employee']}"
|
||||||
propertyNames="firstName,lastName,active,dob,age,phone,email,department.name,description"
|
propertyNames="firstName,lastName,active,dob,age,phone,email,department.name,description"
|
||||||
pageTitle="Employees"
|
pageTitle="Employees"
|
||||||
|
|
|
@ -22,6 +22,11 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.backend.metamodel;
|
package net.forwardfire.vasc.backend.metamodel;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import org.eobjects.metamodel.DataContext;
|
import org.eobjects.metamodel.DataContext;
|
||||||
|
@ -29,11 +34,14 @@ import org.eobjects.metamodel.schema.Column;
|
||||||
import org.eobjects.metamodel.schema.Relationship;
|
import org.eobjects.metamodel.schema.Relationship;
|
||||||
import org.eobjects.metamodel.schema.Table;
|
import org.eobjects.metamodel.schema.Table;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.backend.VascBackend;
|
||||||
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
||||||
import net.forwardfire.vasc.core.VascController;
|
import net.forwardfire.vasc.core.VascController;
|
||||||
import net.forwardfire.vasc.core.VascEntry;
|
import net.forwardfire.vasc.core.VascEntry;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryAccessType;
|
||||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||||
import net.forwardfire.vasc.core.VascEntryFieldLocal;
|
import net.forwardfire.vasc.core.VascEntryFieldLocal;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryGroupLocal;
|
||||||
import net.forwardfire.vasc.core.VascEntryLinkType;
|
import net.forwardfire.vasc.core.VascEntryLinkType;
|
||||||
import net.forwardfire.vasc.core.VascEntryLocal;
|
import net.forwardfire.vasc.core.VascEntryLocal;
|
||||||
|
|
||||||
|
@ -53,15 +61,25 @@ public class MetaModelSchemaAutoEntry {
|
||||||
private Logger logger = null;
|
private Logger logger = null;
|
||||||
private VascController vascController = null;
|
private VascController vascController = null;
|
||||||
private MetaModelDataContextProvider dataContextProvider = null;
|
private MetaModelDataContextProvider dataContextProvider = null;
|
||||||
|
private List<String> tables = null;
|
||||||
private String tableInclude = null;
|
private String tableInclude = null;
|
||||||
private String tableExclude = null;
|
private String tableExclude = null;
|
||||||
private String entryPrefix = null;
|
private String entryPrefix = null;
|
||||||
|
private String vascGroupId = null;
|
||||||
|
|
||||||
|
private Map<String,VascEntryLocal> resultEntries = null;
|
||||||
|
private Map<String,VascEntryGroupLocal> resultEntryGroups = null;
|
||||||
|
private Map<String,MetaModelVascBackend> resultBackends = null;
|
||||||
|
|
||||||
public MetaModelSchemaAutoEntry() {
|
public MetaModelSchemaAutoEntry() {
|
||||||
logger = Logger.getLogger(MetaModelSchemaAutoEntry.class.getName());
|
logger = Logger.getLogger(MetaModelSchemaAutoEntry.class.getName());
|
||||||
|
tables = new ArrayList<String>();
|
||||||
|
resultEntries = new HashMap<String,VascEntryLocal>();
|
||||||
|
resultEntryGroups = new HashMap<String,VascEntryGroupLocal>();
|
||||||
|
resultBackends = new HashMap<String,MetaModelVascBackend>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void autoCreateEntries(VascController vascController) {
|
public void autoFillResult(VascController vascController) {
|
||||||
if (getDataContextProvider()==null) {
|
if (getDataContextProvider()==null) {
|
||||||
throw new NullPointerException("Can't auto create entries with null dataContextProvider.");
|
throw new NullPointerException("Can't auto create entries with null dataContextProvider.");
|
||||||
}
|
}
|
||||||
|
@ -72,6 +90,10 @@ public class MetaModelSchemaAutoEntry {
|
||||||
|
|
||||||
DataContext ds = getDataContextProvider().getDataContext();
|
DataContext ds = getDataContextProvider().getDataContext();
|
||||||
for (String table:ds.getDefaultSchema().getTableNames()) {
|
for (String table:ds.getDefaultSchema().getTableNames()) {
|
||||||
|
if (tables.isEmpty()==false && tables.contains(table)==false) {
|
||||||
|
logger.finer("Excluding table: "+table+" because not in table list.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (getTableInclude()!=null && table.matches(getTableInclude())==false) {
|
if (getTableInclude()!=null && table.matches(getTableInclude())==false) {
|
||||||
logger.finer("Excluding table: "+table+" from include rule.");
|
logger.finer("Excluding table: "+table+" from include rule.");
|
||||||
continue;
|
continue;
|
||||||
|
@ -84,10 +106,22 @@ public class MetaModelSchemaAutoEntry {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void autoAddResultToController() {
|
||||||
|
for (VascBackend backend:resultBackends.values()) {
|
||||||
|
((VascBackendControllerLocal)getVascController().getVascBackendController()).addVascBackend(backend);
|
||||||
|
}
|
||||||
|
for (VascEntryLocal ve:resultEntries.values()) {
|
||||||
|
((VascEntryControllerLocal)getVascController().getVascEntryController()).addVascEntry(ve);
|
||||||
|
}
|
||||||
|
for (VascEntryGroupLocal veg:resultEntryGroups.values()) {
|
||||||
|
((VascEntryControllerLocal)getVascController().getVascEntryController()).addVascEntryGroup(veg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private VascController getVascController() {
|
private VascController getVascController() {
|
||||||
return vascController;
|
return vascController;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createMetaEntry(DataContext ds,String id,String tableName) {
|
private void createMetaEntry(DataContext ds,String id,String tableName) {
|
||||||
logger.fine("Creating entry id: "+id+" of table: "+tableName);
|
logger.fine("Creating entry id: "+id+" of table: "+tableName);
|
||||||
Table metaTable = null;
|
Table metaTable = null;
|
||||||
|
@ -117,28 +151,28 @@ public class MetaModelSchemaAutoEntry {
|
||||||
ve.setId(id);
|
ve.setId(id);
|
||||||
ve.setBackendId(id+"_backend");
|
ve.setBackendId(id+"_backend");
|
||||||
ve.setPrimaryKeyFieldId(backend.getTableId());
|
ve.setPrimaryKeyFieldId(backend.getTableId());
|
||||||
|
ve.setVascGroupId(getVascGroupId());
|
||||||
createFields(ve,cols);
|
createFields(ve,cols);
|
||||||
|
|
||||||
for (Relationship rs:metaTable.getRelationships()) {
|
for (Relationship rs:metaTable.getRelationships()) {
|
||||||
logger.finer("Found relation FT: "+rs.getForeignTable().getName()+" PT: "+rs.getPrimaryTable().getName());
|
logger.finer("Found relation FT: "+rs.getForeignTable().getName()+" PT: "+rs.getPrimaryTable().getName());
|
||||||
if (tableName.equals(rs.getForeignTable().getName())==false) {
|
if (tableName.equals(rs.getForeignTable().getName())==false) {
|
||||||
logger.finer("Creating Link entry for: "+rs.getForeignColumns()[0].getName()+" of table: "+rs.getForeignTable().getName());
|
logger.finer("Creating Link entry for: "+rs.getForeignColumns()[0].getName()+" of table: "+rs.getForeignTable().getName());
|
||||||
createLinkEntry(rs,ve,metaTable,id+"_"+rs.getForeignTable().getName()+"_"+rs.getForeignColumns()[0].getName()+"_link");
|
createLinkEntry(rs,ve,metaTable);
|
||||||
|
//createLinkEntry(rs,ve,metaTable,id+"_"+rs.getForeignTable().getName()+"_"+rs.getForeignColumns()[0].getName()+"_link");
|
||||||
} else {
|
} else {
|
||||||
logger.finer("Creating List entry for: "+rs.getPrimaryColumns()[0].getName()+" of table: "+rs.getPrimaryTable().getName());
|
logger.finer("Creating List entry for: "+rs.getPrimaryColumns()[0].getName()+" of table: "+rs.getPrimaryTable().getName());
|
||||||
createListEntry(rs,ve,metaTable,id+"_"+rs.getPrimaryTable().getName()+"_"+rs.getPrimaryColumns()[0].getName()+"_list");
|
createListEntry(rs,ve,metaTable);
|
||||||
|
//createListEntry(rs,ve,metaTable,id+"_"+rs.getPrimaryTable().getName()+"_"+rs.getPrimaryColumns()[0].getName()+"_list");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
resultBackends.put(backend.getId(),backend);
|
||||||
((VascBackendControllerLocal)getVascController().getVascBackendController()).addVascBackend(backend);
|
resultEntries.put(ve.getId(),ve);
|
||||||
((VascEntryControllerLocal)getVascController().getVascEntryController()).addVascEntry(ve);
|
|
||||||
} catch (Exception ee) {
|
|
||||||
ee.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createLinkEntry(Relationship rs2,VascEntryLocal ve,Table metaTable,String id) {
|
private void createLinkEntry(Relationship rs2,VascEntryLocal ve,Table metaTable) {
|
||||||
|
String id = getEntryPrefix()+"_"+metaTable.getName()+"_link";
|
||||||
MetaModelVascBackend backendLink = new MetaModelVascBackend();
|
MetaModelVascBackend backendLink = new MetaModelVascBackend();
|
||||||
backendLink.setId(id+"_backend");
|
backendLink.setId(id+"_backend");
|
||||||
backendLink.setDataContextProvider(getDataContextProvider());
|
backendLink.setDataContextProvider(getDataContextProvider());
|
||||||
|
@ -159,6 +193,8 @@ public class MetaModelSchemaAutoEntry {
|
||||||
veLink.setId(id);
|
veLink.setId(id);
|
||||||
veLink.setBackendId(id+"_backend");
|
veLink.setBackendId(id+"_backend");
|
||||||
veLink.setPrimaryKeyFieldId(backendLink.getTableId());
|
veLink.setPrimaryKeyFieldId(backendLink.getTableId());
|
||||||
|
veLink.setVascGroupId(getVascGroupId());
|
||||||
|
veLink.setAccessType(VascEntryAccessType.ENTRY_LIST);
|
||||||
createFields(veLink,cols);
|
createFields(veLink,cols);
|
||||||
|
|
||||||
for (Relationship rs:rs2.getForeignTable().getRelationships()) {
|
for (Relationship rs:rs2.getForeignTable().getRelationships()) {
|
||||||
|
@ -168,32 +204,31 @@ public class MetaModelSchemaAutoEntry {
|
||||||
//createLinkEntry(rs,ve,rs2.getForeignTable(),id+"_"+rs.getForeignTable().getName()+"_"+rs.getForeignColumns()[0].getName()+"_link");
|
//createLinkEntry(rs,ve,rs2.getForeignTable(),id+"_"+rs.getForeignTable().getName()+"_"+rs.getForeignColumns()[0].getName()+"_link");
|
||||||
} else {
|
} else {
|
||||||
logger.fine("Creating List entry for: "+rs.getPrimaryColumns()[0].getName()+" of table: "+rs.getPrimaryTable().getName());
|
logger.fine("Creating List entry for: "+rs.getPrimaryColumns()[0].getName()+" of table: "+rs.getPrimaryTable().getName());
|
||||||
createListEntry(rs,veLink,rs2.getForeignTable(),id+"_"+rs.getPrimaryTable().getName()+"_"+rs.getPrimaryColumns()[0].getName()+"_list");
|
createListEntry(rs,veLink,rs2.getForeignTable());
|
||||||
|
//createListEntry(rs,veLink,rs2.getForeignTable(),id+"_"+rs.getPrimaryTable().getName()+"_"+rs.getPrimaryColumns()[0].getName()+"_list");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
if (resultBackends.containsKey(backendLink.getId())==false) {
|
||||||
((VascBackendControllerLocal)getVascController().getVascBackendController()).addVascBackend(backendLink);
|
resultBackends.put(backendLink.getId(),backendLink);
|
||||||
((VascEntryControllerLocal)getVascController().getVascEntryController()).addVascEntry(veLink);
|
resultEntries.put(veLink.getId(),veLink);
|
||||||
|
|
||||||
DefaultVascEntryLink vle = new DefaultVascEntryLink();
|
|
||||||
vle.setId(id+"Link");
|
|
||||||
vle.setVascLinkEntryType(VascEntryLinkType.DEFAULT_TYPE);
|
|
||||||
vle.setVascEntryId(id);
|
|
||||||
vle.addEntryParameterFieldId(rs2.getForeignColumns()[0].getName(), rs2.getPrimaryColumns()[0].getName());
|
|
||||||
|
|
||||||
ve.addVascEntryLink(vle);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DefaultVascEntryLink vle = new DefaultVascEntryLink();
|
||||||
|
vle.setId(id+"Link");
|
||||||
|
vle.setVascEntryLinkType(VascEntryLinkType.DEFAULT_TYPE);
|
||||||
|
vle.setVascEntryId(id);
|
||||||
|
vle.addEntryParameterFieldId(rs2.getForeignColumns()[0].getName(), rs2.getPrimaryColumns()[0].getName());
|
||||||
|
|
||||||
|
ve.addVascEntryLink(vle);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createListEntry(Relationship rs,VascEntry ve,Table metaTable,String id) {
|
private void createListEntry(Relationship rs,VascEntry ve,Table metaTable) {
|
||||||
MetaModelVascBackend backendLink = new MetaModelVascBackend();
|
String id = getEntryPrefix()+"_"+metaTable.getName()+"_list";
|
||||||
backendLink.setId(id+"_backend");
|
MetaModelVascBackend backendList = new MetaModelVascBackend();
|
||||||
backendLink.setDataContextProvider(getDataContextProvider());
|
backendList.setId(id+"_backend");
|
||||||
backendLink.setTable(rs.getPrimaryTable().getName());
|
backendList.setDataContextProvider(getDataContextProvider());
|
||||||
|
backendList.setTable(rs.getPrimaryTable().getName());
|
||||||
|
|
||||||
Column[] keys = rs.getPrimaryTable().getPrimaryKeys();
|
Column[] keys = rs.getPrimaryTable().getPrimaryKeys();
|
||||||
Column[] cols = rs.getPrimaryTable().getColumns();
|
Column[] cols = rs.getPrimaryTable().getColumns();
|
||||||
|
@ -201,33 +236,35 @@ public class MetaModelSchemaAutoEntry {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (keys.length>0) {
|
if (keys.length>0) {
|
||||||
backendLink.setTableId(keys[0].getName());
|
backendList.setTableId(keys[0].getName());
|
||||||
} else {
|
} else {
|
||||||
backendLink.setTableId(cols[0].getName());
|
backendList.setTableId(cols[0].getName());
|
||||||
}
|
}
|
||||||
DefaultVascEntry veLink = new DefaultVascEntry();
|
DefaultVascEntry veList = new DefaultVascEntry();
|
||||||
veLink.setId(id);
|
veList.setId(id);
|
||||||
veLink.setBackendId(id+"_backend");
|
veList.setBackendId(id+"_backend");
|
||||||
veLink.setPrimaryKeyFieldId(backendLink.getTableId());
|
veList.setPrimaryKeyFieldId(backendList.getTableId());
|
||||||
createFields(veLink,cols);
|
veList.setVascGroupId(getVascGroupId());
|
||||||
try {
|
veList.setAccessType(VascEntryAccessType.ENTRY_LIST);
|
||||||
VascEntryFieldLocal vef = (VascEntryFieldLocal)ve.getVascEntryFieldById(rs.getForeignColumns()[0].getName());
|
createFields(veList,cols);
|
||||||
if (vef==null) {
|
|
||||||
logger.warning("Could not find: "+rs.getForeignColumns()[0].getName()+" in ve: "+ve.getId());
|
if (resultBackends.containsKey(backendList.getId())==false) {
|
||||||
return;
|
resultBackends.put(backendList.getId(),backendList);
|
||||||
}
|
resultEntries.put(veList.getId(),veList);
|
||||||
vef.setVascEntryFieldType(getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeById("ListField"));
|
|
||||||
|
|
||||||
VascSelectItemModelEntry itemModel = new VascSelectItemModelEntry();
|
|
||||||
itemModel.setEntryId(veLink.getId());
|
|
||||||
itemModel.setDisplayFieldId(veLink.getDisplayNameFieldId());
|
|
||||||
vef.getVascEntryFieldType().setDataObject(itemModel);
|
|
||||||
|
|
||||||
((VascBackendControllerLocal)getVascController().getVascBackendController()).addVascBackend(backendLink);
|
|
||||||
((VascEntryControllerLocal)getVascController().getVascEntryController()).addVascEntry(veLink);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VascEntryFieldLocal vef = (VascEntryFieldLocal)ve.getVascEntryFieldById(rs.getForeignColumns()[0].getName());
|
||||||
|
if (vef==null) {
|
||||||
|
logger.warning("Could not find: "+rs.getForeignColumns()[0].getName()+" in ve: "+ve.getId());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
vef.setVascEntryFieldType(getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeById("ListField"));
|
||||||
|
|
||||||
|
VascSelectItemModelEntry itemModel = new VascSelectItemModelEntry();
|
||||||
|
itemModel.setEntryId(veList.getId());
|
||||||
|
itemModel.setDisplayFieldId(veList.getDisplayNameFieldId());
|
||||||
|
vef.getVascEntryFieldType().setDataObject(itemModel);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createFields(VascEntryLocal ve,Column[] cols) {
|
private void createFields(VascEntryLocal ve,Column[] cols) {
|
||||||
|
@ -317,4 +354,53 @@ public class MetaModelSchemaAutoEntry {
|
||||||
public void setEntryPrefix(String entryPrefix) {
|
public void setEntryPrefix(String entryPrefix) {
|
||||||
this.entryPrefix = entryPrefix;
|
this.entryPrefix = entryPrefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the vascGroupId
|
||||||
|
*/
|
||||||
|
public String getVascGroupId() {
|
||||||
|
return vascGroupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param vascGroupId the vascGroupId to set
|
||||||
|
*/
|
||||||
|
public void setVascGroupId(String vascGroupId) {
|
||||||
|
this.vascGroupId = vascGroupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the resultEntries
|
||||||
|
*/
|
||||||
|
public Collection<VascEntryLocal> getResultEntries() {
|
||||||
|
return resultEntries.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the resultEntryGroups
|
||||||
|
*/
|
||||||
|
public Collection<VascEntryGroupLocal> getResultEntryGroups() {
|
||||||
|
return resultEntryGroups.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the resultBackends
|
||||||
|
*/
|
||||||
|
public Collection<MetaModelVascBackend> getResultBackends() {
|
||||||
|
return resultBackends.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the tables
|
||||||
|
*/
|
||||||
|
public List<String> getTables() {
|
||||||
|
return tables;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTable(String table) {
|
||||||
|
tables.add(table);
|
||||||
|
}
|
||||||
|
public void removeTable(String table) {
|
||||||
|
tables.remove(table);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ public class SchemaAutoEntryElementConfigurator extends AbstractElementConfigura
|
||||||
}
|
}
|
||||||
MetaModelSchemaAutoEntry autoEntry = (MetaModelSchemaAutoEntry)element.getElementObject();
|
MetaModelSchemaAutoEntry autoEntry = (MetaModelSchemaAutoEntry)element.getElementObject();
|
||||||
VascController vascController = VascParser.getVascController(element.getElementLanguage());
|
VascController vascController = VascParser.getVascController(element.getElementLanguage());
|
||||||
autoEntry.autoCreateEntries(vascController);
|
autoEntry.autoFillResult(vascController);
|
||||||
|
autoEntry.autoAddResultToController();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,227 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.ejb3;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.backend.VascBackend;
|
||||||
|
import net.forwardfire.vasc.backend.VascBackendState;
|
||||||
|
import net.forwardfire.vasc.core.VascEntry;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryField;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryFieldLocal;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryLocal;
|
||||||
|
import net.forwardfire.vasc.core.VascException;
|
||||||
|
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
|
||||||
|
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VascServiceRemoteBackend wraps VascBasckend to the ejb3 context.
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 18 Nov 2012
|
||||||
|
*/
|
||||||
|
public class VascServiceRemoteBackend implements VascBackend {
|
||||||
|
|
||||||
|
private String backendId = null;
|
||||||
|
private VascServiceManager vascManager = null;
|
||||||
|
|
||||||
|
public VascServiceRemoteBackend(VascServiceManager vascManager,String backendId) {
|
||||||
|
if (vascManager==null) {
|
||||||
|
throw new NullPointerException("Can't be remote backend on null VascServiceManager.");
|
||||||
|
}
|
||||||
|
if (backendId==null) {
|
||||||
|
throw new NullPointerException("Can't be remote backend on null backendId.");
|
||||||
|
}
|
||||||
|
this.vascManager=vascManager;
|
||||||
|
this.backendId=backendId;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startBackend() {
|
||||||
|
}
|
||||||
|
public void stopBackend() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return backendId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
// we cant change id
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(Object object) throws VascException {
|
||||||
|
Object[] args = new Object[1];
|
||||||
|
args[0]=object;
|
||||||
|
vascManager.invokeBackendMethod(backendId, "delete", args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascException {
|
||||||
|
Object[] args = new Object[2];
|
||||||
|
args[0]=state;
|
||||||
|
args[1]=primaryId;
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "doRecordMoveDownById", args);
|
||||||
|
return (Long)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascException {
|
||||||
|
Object[] args = new Object[2];
|
||||||
|
args[0]=state;
|
||||||
|
args[1]=primaryId;
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "doRecordMoveUpById", args);
|
||||||
|
return (Long)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<Object> execute(VascBackendState state) throws VascException {
|
||||||
|
Object[] args = new Object[1];
|
||||||
|
args[0]=state;
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "execute", args);
|
||||||
|
return (List<Object>)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long fetchTotalExecuteSize(VascBackendState state) {
|
||||||
|
Object[] args = new Object[1];
|
||||||
|
args[0]=state;
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "fetchTotalExecuteSize", args);
|
||||||
|
return (Long)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPageable() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "isPageable", args);
|
||||||
|
return (Boolean)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isRecordMoveable() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "isRecordMoveable", args);
|
||||||
|
return (Boolean)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSearchable() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "isSearchable", args);
|
||||||
|
return (Boolean)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSortable() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "isSortable", args);
|
||||||
|
return (Boolean)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object merge(Object object) throws VascException {
|
||||||
|
Object[] args = new Object[1];
|
||||||
|
args[0]=object;
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "merge", args);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void persist(Object object) throws VascException {
|
||||||
|
Object[] args = new Object[1];
|
||||||
|
args[0]=object;
|
||||||
|
vascManager.invokeBackendMethod(backendId, "delete", args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public VascEntryFieldValue provideVascEntryFieldValue(VascEntryField field) {
|
||||||
|
try {
|
||||||
|
field = ((VascEntryFieldLocal)field).clone(); // RM...
|
||||||
|
|
||||||
|
ByteArrayOutputStream dataArray = new ByteArrayOutputStream(256); // it grows when needed
|
||||||
|
ObjectOutputStream objOutstream = new ObjectOutputStream(dataArray);
|
||||||
|
objOutstream.writeObject(field);
|
||||||
|
objOutstream.close();
|
||||||
|
int objectSize = dataArray.size();
|
||||||
|
System.out.println("Writing obj to field: "+objectSize);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
Object[] args = new Object[1];
|
||||||
|
args[0]=field;
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "provideVascEntryFieldValue", args);
|
||||||
|
return (VascEntryFieldValue)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VascEntryRecordCreator provideVascEntryRecordCreator(VascEntry vascEntry) {
|
||||||
|
VascEntryLocal clone = null;
|
||||||
|
try {
|
||||||
|
clone = ((VascEntryLocal)vascEntry).clone();
|
||||||
|
clone.setVascFrontendController(null);
|
||||||
|
clone.setVascEntryFieldEventChannel(null);
|
||||||
|
} catch (CloneNotSupportedException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
ByteArrayOutputStream dataArray = new ByteArrayOutputStream(256); // it grows when needed
|
||||||
|
ObjectOutputStream objOutstream = new ObjectOutputStream(dataArray);
|
||||||
|
objOutstream.writeObject(clone);
|
||||||
|
objOutstream.close();
|
||||||
|
//int objectSize = dataArray.size();
|
||||||
|
//System.out.println("Writing obj to entry: "+objectSize);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
Object[] args = new Object[1];
|
||||||
|
args[0]=clone;
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "provideVascEntryRecordCreator", args);
|
||||||
|
return (VascEntryRecordCreator)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public Map<String, Object> executePageSummary() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "executePageSummary", args);
|
||||||
|
return (Map<String, Object>)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public Map<String, Object> executeTotalSummary() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "executeTotalSummary", args);
|
||||||
|
return (Map<String, Object>)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPageSummary() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "isPageSummary", args);
|
||||||
|
return (Boolean)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTotalSummary() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "isTotalSummary", args);
|
||||||
|
return (Boolean)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isReadOnly() {
|
||||||
|
Object[] args = new Object[0];
|
||||||
|
Object result = vascManager.invokeBackendMethod(backendId, "isReadOnly", args);
|
||||||
|
return (Boolean)result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -98,40 +98,28 @@ public class VascServiceManagerImpl implements VascServiceManagerRemote,VascServ
|
||||||
// resourceBundle = ResourceBundle.getBundle(value);
|
// resourceBundle = ResourceBundle.getBundle(value);
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
if (entityManager==null) {
|
|
||||||
new NullPointerException("Have no entityManager");
|
|
||||||
}
|
|
||||||
if (xpqlController==null) {
|
|
||||||
new NullPointerException("Have no xpqlController");
|
|
||||||
}*/
|
|
||||||
//if (resourceBundle==null) {
|
|
||||||
// new NullPointerException("Have no resourceBundle");
|
|
||||||
//}
|
|
||||||
long s = System.currentTimeMillis();
|
long s = System.currentTimeMillis();
|
||||||
|
|
||||||
// get local jvm plugging controller
|
// get local jvm plugging controller
|
||||||
if (vascController==null) {
|
if (vascController==null) {
|
||||||
vascController = DefaultVascFactory.getDefaultVascController();
|
vascController = DefaultVascFactory.getDefaultVascController();
|
||||||
}
|
}
|
||||||
|
for (String key:keys.keySet()) {
|
||||||
for (String key:keys.keySet()) {
|
String value = keys.get(key);
|
||||||
String value = keys.get(key);
|
if (key.startsWith("load")) {
|
||||||
if (key.startsWith("load")) {
|
// TODO made reuse working.
|
||||||
// TODO made reuse working.
|
VascParser vp = new VascParser(vascController);
|
||||||
VascParser vp = new VascParser(vascController);
|
if (xpqlController!=null) {
|
||||||
if (xpqlController!=null) {
|
vp.addELBean("xpqlController", new XpqlController());
|
||||||
vp.addELBean("xpqlController", new XpqlController());
|
}
|
||||||
}
|
if (entityManager!=null) {
|
||||||
if (entityManager!=null) {
|
vp.addELBean("entityManagerProvider", new LocalEntityManagerProvider());
|
||||||
vp.addELBean("entityManagerProvider", new LocalEntityManagerProvider());
|
}
|
||||||
}
|
vp.parseResource(value);
|
||||||
vp.parseResource(value);
|
}
|
||||||
}
|
}
|
||||||
}
|
DefaultVascFactory.fillVascControllerLocalEntries((VascEntryControllerLocal) vascController.getVascEntryController(), vascController);
|
||||||
DefaultVascFactory.fillVascControllerLocalEntries((VascEntryControllerLocal) vascController.getVascEntryController(), vascController);
|
|
||||||
|
|
||||||
|
|
||||||
long t = System.currentTimeMillis()-s;
|
long t = System.currentTimeMillis()-s;
|
||||||
logger.info("Total loaded vasc entries: "+vascController.getVascEntryController().getVascEntryIds().size()+" in "+t+" ms.");
|
logger.info("Total loaded vasc entries: "+vascController.getVascEntryController().getVascEntryIds().size()+" in "+t+" ms.");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -139,56 +127,53 @@ public class VascServiceManagerImpl implements VascServiceManagerRemote,VascServ
|
||||||
throw new RuntimeException("Error while init resources error: "+e.getMessage(),e);
|
throw new RuntimeException("Error while init resources error: "+e.getMessage(),e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads xtes-xpql-ejb3.xml from meta-inf and gives the keys
|
* Loads xtes-xpql-ejb3.xml from meta-inf and gives the keys
|
||||||
*/
|
*/
|
||||||
protected Map<String,String> loadKeys() throws IOException {
|
protected Map<String,String> loadKeys() throws IOException {
|
||||||
|
Properties properties = new Properties();
|
||||||
Properties properties = new Properties();
|
logger.fine("Getting urls");
|
||||||
|
Enumeration<URL> e = Thread.currentThread().getContextClassLoader().getResources("META-INF/vasc-ejb3.xml");
|
||||||
logger.fine("Getting urls");
|
while(e.hasMoreElements()) {
|
||||||
Enumeration<URL> e = Thread.currentThread().getContextClassLoader().getResources("META-INF/vasc-ejb3.xml");
|
URL u = e.nextElement();
|
||||||
while(e.hasMoreElements()) {
|
logger.finer("Loading reletive namespaces of: "+u+" for: META-INF/vasc-ejb3.xml");
|
||||||
URL u = e.nextElement();
|
InputStream in = u.openStream();
|
||||||
logger.finer("Loading reletive namespaces of: "+u+" for: META-INF/vasc-ejb3.xml");
|
try {
|
||||||
InputStream in = u.openStream();
|
properties.loadFromXML(in);
|
||||||
try {
|
} finally {
|
||||||
properties.loadFromXML(in);
|
if (in!=null) {
|
||||||
} finally {
|
in.close();
|
||||||
if (in!=null) {
|
}
|
||||||
in.close();
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
e = Thread.currentThread().getContextClassLoader().getResources("/META-INF/vasc-ejb3.xml");
|
||||||
|
while(e.hasMoreElements()) {
|
||||||
|
URL u = e.nextElement();
|
||||||
e = Thread.currentThread().getContextClassLoader().getResources("/META-INF/vasc-ejb3.xml");
|
logger.finer("Loading root namespaces of: "+u+" for: /META-INF/vasc-ejb3.xml");
|
||||||
while(e.hasMoreElements()) {
|
InputStream in = u.openStream();
|
||||||
URL u = e.nextElement();
|
try {
|
||||||
logger.finer("Loading root namespaces of: "+u+" for: /META-INF/vasc-ejb3.xml");
|
properties.loadFromXML(in);
|
||||||
InputStream in = u.openStream();
|
} finally {
|
||||||
try {
|
if (in!=null) {
|
||||||
properties.loadFromXML(in);
|
in.close();
|
||||||
} finally {
|
}
|
||||||
if (in!=null) {
|
}
|
||||||
in.close();
|
}
|
||||||
}
|
logger.fine("done loading");
|
||||||
}
|
|
||||||
}
|
Map<String,String> result = new HashMap<String,String>(20);
|
||||||
logger.fine("done loading");
|
for (Object key:properties.keySet()) {
|
||||||
|
if (key instanceof String) {
|
||||||
Map<String,String> result = new HashMap<String,String>(20);
|
String key2 = (String) key;
|
||||||
for (Object key:properties.keySet()) {
|
String value = properties.getProperty(key2);
|
||||||
if (key instanceof String) {
|
result.put(key2, value);
|
||||||
String key2 = (String) key;
|
}
|
||||||
String value = properties.getProperty(key2);
|
}
|
||||||
result.put(key2, value);
|
return result;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public Map<String,String> getResourceBundle(String locale) {
|
public Map<String,String> getResourceBundle(String locale) {
|
||||||
Map<String,String> result = new HashMap<String,String>(resourceBundle.keySet().size());
|
Map<String,String> result = new HashMap<String,String>(resourceBundle.keySet().size());
|
||||||
|
@ -199,7 +184,7 @@ public class VascServiceManagerImpl implements VascServiceManagerRemote,VascServ
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public List<String> getVascEntryIds() {
|
public List<String> getVascEntryIds() {
|
||||||
VascController v = getVascController();
|
VascController v = getVascController();
|
||||||
if (v==null) {
|
if (v==null) {
|
||||||
|
@ -291,7 +276,7 @@ public class VascServiceManagerImpl implements VascServiceManagerRemote,VascServ
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings({ "rawtypes" })
|
||||||
public void putAll(Map m) {
|
public void putAll(Map m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,9 +37,11 @@ import java.util.Map;
|
||||||
abstract public class AbstractVascEntryControllerLocal implements VascEntryControllerLocal {
|
abstract public class AbstractVascEntryControllerLocal implements VascEntryControllerLocal {
|
||||||
|
|
||||||
private Map<String,VascEntryLocal> entries = null;
|
private Map<String,VascEntryLocal> entries = null;
|
||||||
|
private Map<String,VascEntryGroupLocal> groups = null;
|
||||||
|
|
||||||
public AbstractVascEntryControllerLocal() {
|
public AbstractVascEntryControllerLocal() {
|
||||||
entries = new HashMap<String,VascEntryLocal>(1000);
|
entries = Collections.synchronizedMap(new HashMap<String,VascEntryLocal>(1000));
|
||||||
|
groups = Collections.synchronizedMap(new HashMap<String,VascEntryGroupLocal>(100));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -93,4 +95,74 @@ abstract public class AbstractVascEntryControllerLocal implements VascEntryContr
|
||||||
Collections.sort(result); // lets do abc for consistance behauvior.
|
Collections.sort(result); // lets do abc for consistance behauvior.
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see net.forwardfire.vasc.core.VascEntryController#getVascEntryByGroupId(java.lang.String)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<String> getVascEntryByGroupId(String groupId) {
|
||||||
|
if (groupId==null) {
|
||||||
|
throw new NullPointerException("Can't search null groupId.");
|
||||||
|
}
|
||||||
|
List<String> result = new ArrayList<String>(40);
|
||||||
|
for (VascEntryLocal entry:entries.values()) {
|
||||||
|
if (groupId.equals(entry.getVascGroupId())) {
|
||||||
|
result.add(entry.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see net.forwardfire.vasc.core.VascEntryController#getVascEntryGroupById(java.lang.String)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public VascEntryGroup getVascEntryGroupById(String id) {
|
||||||
|
VascEntryGroupLocal result = groups.get(id);
|
||||||
|
if (result==null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return result.clone();
|
||||||
|
} catch (CloneNotSupportedException e) {
|
||||||
|
throw new NullPointerException("Could not clone entry: "+e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see net.forwardfire.vasc.core.VascEntryController#getVascEntryGroupIds()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<String> getVascEntryGroupIds() {
|
||||||
|
List<String> result = new ArrayList<String>(groups.keySet());
|
||||||
|
Collections.sort(result); // lets do abc for consistance behauvior.
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see net.forwardfire.vasc.core.VascEntryControllerLocal#addVascEntryGroup(net.forwardfire.vasc.core.VascEntryGroupLocal)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void addVascEntryGroup(VascEntryGroupLocal group) {
|
||||||
|
if (group==null) {
|
||||||
|
throw new NullPointerException("Can't add null VascEntryGroup.");
|
||||||
|
}
|
||||||
|
if (group.getId()==null) {
|
||||||
|
throw new NullPointerException("Can't add VascEntryGroup with null Id.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: move
|
||||||
|
if (group.getName()==null) {
|
||||||
|
group.setName("vasc.entry.group."+group.getId()+".name");
|
||||||
|
}
|
||||||
|
if (group.getDescription()==null) {
|
||||||
|
group.setDescription("vasc.entry.group."+group.getId()+".description");
|
||||||
|
}
|
||||||
|
if (group.getImage()==null) {
|
||||||
|
group.setImage("vasc.entry.group."+group.getId()+".image");
|
||||||
|
}
|
||||||
|
//group.getHelpId()
|
||||||
|
|
||||||
|
groups.put(group.getId(), group);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.core;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.core.base.AbstractVascBaseIdRoleViewOrderMetaLocal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AbstractVascEntryGroupLocal
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nov 23, 2012
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
abstract public class AbstractVascEntryGroupLocal extends AbstractVascBaseIdRoleViewOrderMetaLocal implements VascEntryGroupLocal {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VascEntryGroupLocal clone() throws CloneNotSupportedException {
|
||||||
|
Object clone = cloneCreate();
|
||||||
|
cloneFields(clone);
|
||||||
|
return (VascEntryGroupLocal)clone;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@Override
|
||||||
|
public void cloneFields(Object cloneObject) throws CloneNotSupportedException {
|
||||||
|
super.cloneFields(cloneObject);
|
||||||
|
VascEntryGroupLocal clone = (VascEntryGroupLocal)cloneObject;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
|
@ -41,7 +41,7 @@ abstract public class AbstractVascEntryLinkLocal extends AbstractVascBaseIdRoleV
|
||||||
private String vascEntryId = null;
|
private String vascEntryId = null;
|
||||||
private Map<String,String> entryParameterFieldIds = new HashMap<String,String>(3);
|
private Map<String,String> entryParameterFieldIds = new HashMap<String,String>(3);
|
||||||
private Map<String,String> entryCreateFieldValues = new HashMap<String,String>(3);
|
private Map<String,String> entryCreateFieldValues = new HashMap<String,String>(3);
|
||||||
private VascEntryLinkType vascLinkEntryType = null;
|
private VascEntryLinkType vascEntryLinkType = null;
|
||||||
private String doActionId = null;
|
private String doActionId = null;
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ abstract public class AbstractVascEntryLinkLocal extends AbstractVascBaseIdRoleV
|
||||||
VascEntryLinkLocal clone = (VascEntryLinkLocal)cloneObject;
|
VascEntryLinkLocal clone = (VascEntryLinkLocal)cloneObject;
|
||||||
clone.setVascEntryId(getVascEntryId());
|
clone.setVascEntryId(getVascEntryId());
|
||||||
clone.setDoActionId(getDoActionId());
|
clone.setDoActionId(getDoActionId());
|
||||||
clone.setVascLinkEntryType(getVascLinkEntryType());
|
clone.setVascEntryLinkType(getVascEntryLinkType());
|
||||||
for (String key:getEntryParameterFieldIdKeys()) {
|
for (String key:getEntryParameterFieldIdKeys()) {
|
||||||
clone.addEntryParameterFieldId(key, getEntryParameterFieldId(key));
|
clone.addEntryParameterFieldId(key, getEntryParameterFieldId(key));
|
||||||
}
|
}
|
||||||
|
@ -104,15 +104,15 @@ abstract public class AbstractVascEntryLinkLocal extends AbstractVascBaseIdRoleV
|
||||||
/**
|
/**
|
||||||
* @return the vascLinkEntryType
|
* @return the vascLinkEntryType
|
||||||
*/
|
*/
|
||||||
public VascEntryLinkType getVascLinkEntryType() {
|
public VascEntryLinkType getVascEntryLinkType() {
|
||||||
return vascLinkEntryType;
|
return vascEntryLinkType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param vascLinkEntryType the vascLinkEntryType to set
|
* @param vascLinkEntryType the vascLinkEntryType to set
|
||||||
*/
|
*/
|
||||||
public void setVascLinkEntryType(VascEntryLinkType vascLinkEntryType) {
|
public void setVascEntryLinkType(VascEntryLinkType vascEntryLinkType) {
|
||||||
this.vascLinkEntryType = vascLinkEntryType;
|
this.vascEntryLinkType = vascEntryLinkType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -67,7 +67,8 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
|
||||||
private Boolean vascDisplayOnly = null; // todo rename
|
private Boolean vascDisplayOnly = null; // todo rename
|
||||||
private Boolean delete = null;
|
private Boolean delete = null;
|
||||||
private String rolesDelete = null;
|
private String rolesDelete = null;
|
||||||
|
private VascEntryAccessType accessType = null;
|
||||||
|
|
||||||
private List<VascEntryFieldLocal> vascFields = null;
|
private List<VascEntryFieldLocal> vascFields = null;
|
||||||
private List<RowVascActionLocal> rowActions = null;
|
private List<RowVascActionLocal> rowActions = null;
|
||||||
private List<ColumnVascActionLocal> columnActions = null;
|
private List<ColumnVascActionLocal> columnActions = null;
|
||||||
|
@ -75,8 +76,8 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
|
||||||
private List<GlobalVascActionLocal> exportActions = null;
|
private List<GlobalVascActionLocal> exportActions = null;
|
||||||
private List<VascEntryFieldSetLocal> vascEntryFieldSets = null;
|
private List<VascEntryFieldSetLocal> vascEntryFieldSets = null;
|
||||||
private List<VascEntryLinkLocal> vascEntryLinks = null;
|
private List<VascEntryLinkLocal> vascEntryLinks = null;
|
||||||
|
|
||||||
private Map<String,Object> entryParameters = null;
|
private Map<String,Object> entryParameters = null;
|
||||||
private VascEntryFieldEventChannel vascEntryFieldEventChannel = null;
|
private VascEntryFieldEventChannel vascEntryFieldEventChannel = null;
|
||||||
private Map<String,List<String>> eventEntryFrontendEventListeners = null;
|
private Map<String,List<String>> eventEntryFrontendEventListeners = null;
|
||||||
private List<String> eventEntryBackendEventListeners = null;
|
private List<String> eventEntryBackendEventListeners = null;
|
||||||
|
@ -85,6 +86,7 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
|
||||||
private Map<String,List<String>> eventEntryFrontendActions = null;
|
private Map<String,List<String>> eventEntryFrontendActions = null;
|
||||||
|
|
||||||
private String backendId = null;
|
private String backendId = null;
|
||||||
|
private String vascGroupId = null;
|
||||||
private VascFrontendController vascFrontendData = null;
|
private VascFrontendController vascFrontendData = null;
|
||||||
|
|
||||||
public AbstractVascEntryLocal() {
|
public AbstractVascEntryLocal() {
|
||||||
|
@ -134,6 +136,7 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
|
||||||
|
|
||||||
clone.setDelete(getDelete());
|
clone.setDelete(getDelete());
|
||||||
clone.setRolesDelete(getRolesDelete());
|
clone.setRolesDelete(getRolesDelete());
|
||||||
|
clone.setAccessType(getAccessType());
|
||||||
|
|
||||||
for (VascEntryFieldLocal field:getVascEntryFieldsLocal()) {
|
for (VascEntryFieldLocal field:getVascEntryFieldsLocal()) {
|
||||||
VascEntryFieldLocal fieldClone = field.clone();
|
VascEntryFieldLocal fieldClone = field.clone();
|
||||||
|
@ -185,6 +188,7 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
clone.setBackendId(getBackendId());
|
clone.setBackendId(getBackendId());
|
||||||
|
clone.setVascGroupId(getVascGroupId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -900,4 +904,32 @@ abstract public class AbstractVascEntryLocal extends AbstractVascBaseIdRoleCrudL
|
||||||
public void setVascDisplayOnly(Boolean vascDisplayOnly) {
|
public void setVascDisplayOnly(Boolean vascDisplayOnly) {
|
||||||
this.vascDisplayOnly = vascDisplayOnly;
|
this.vascDisplayOnly = vascDisplayOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the vascGroupId
|
||||||
|
*/
|
||||||
|
public String getVascGroupId() {
|
||||||
|
return vascGroupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param vascGroupId the vascGroupId to set
|
||||||
|
*/
|
||||||
|
public void setVascGroupId(String vascGroupId) {
|
||||||
|
this.vascGroupId = vascGroupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the accessType
|
||||||
|
*/
|
||||||
|
public VascEntryAccessType getAccessType() {
|
||||||
|
return accessType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param accessType the accessType to set
|
||||||
|
*/
|
||||||
|
public void setAccessType(VascEntryAccessType accessType) {
|
||||||
|
this.accessType = accessType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,6 +117,11 @@ public interface VascEntry extends VascBaseIdRoleCrud {
|
||||||
*/
|
*/
|
||||||
public String getRolesDelete();
|
public String getRolesDelete();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the accessType
|
||||||
|
*/
|
||||||
|
public VascEntryAccessType getAccessType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the vascFields
|
* @return the vascFields
|
||||||
*/
|
*/
|
||||||
|
@ -196,6 +201,8 @@ public interface VascEntry extends VascBaseIdRoleCrud {
|
||||||
|
|
||||||
public String getBackendId();
|
public String getBackendId();
|
||||||
|
|
||||||
|
public String getVascGroupId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the vascDisplayOnly
|
* @return the vascDisplayOnly
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2009-2012 forwardfire.net All rights reserved.
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
* that the following conditions are met:
|
* that the following conditions are met:
|
||||||
|
@ -20,30 +20,22 @@
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.tech.ejb3.menu.model;
|
package net.forwardfire.vasc.core;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Comparator;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* VascMenuComparator orders the menu group.
|
* The type of a VascEntryAccessType
|
||||||
*
|
*
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 nov 17, 2012
|
* @version 1.0 Nov 25, 2012
|
||||||
*/
|
*/
|
||||||
public class VascMenuComparator implements Serializable,Comparator<VascMenu> {
|
public enum VascEntryAccessType implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 386631856823832371L;
|
DIRECT,
|
||||||
|
DIRECT_PARAMETER,
|
||||||
|
ENTRY_LIST,
|
||||||
|
ENTRY_LINK;
|
||||||
|
|
||||||
public int compare(VascMenu m1, VascMenu m2) {
|
public static VascEntryAccessType DEFAULT_TYPE = VascEntryAccessType.DIRECT;
|
||||||
if (m1.getMenuOrder()==null) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (m2.getMenuOrder()==null) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return m1.getMenuOrder().compareTo(m2.getMenuOrder());
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -35,4 +35,10 @@ public interface VascEntryController {
|
||||||
public VascEntry getVascEntryById(String id);
|
public VascEntry getVascEntryById(String id);
|
||||||
|
|
||||||
public List<String> getVascEntryIds();
|
public List<String> getVascEntryIds();
|
||||||
|
|
||||||
|
public List<String> getVascEntryByGroupId(String groupId);
|
||||||
|
|
||||||
|
public VascEntryGroup getVascEntryGroupById(String id);
|
||||||
|
|
||||||
|
public List<String> getVascEntryGroupIds();
|
||||||
}
|
}
|
|
@ -37,4 +37,6 @@ public interface VascEntryControllerLocal extends VascEntryController {
|
||||||
public void removeVascEntry(String entryId);
|
public void removeVascEntry(String entryId);
|
||||||
|
|
||||||
public VascEntryLocal getMasterVascEntryById(String entryId);
|
public VascEntryLocal getMasterVascEntryById(String entryId);
|
||||||
|
|
||||||
|
public void addVascEntryGroup(VascEntryGroupLocal group);
|
||||||
}
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.core;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.core.base.VascBaseIdRoleViewOrderMeta;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VascLinkGroup binds multiple entries as one group.
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nove 23, 2012
|
||||||
|
*/
|
||||||
|
public interface VascEntryGroup extends VascBaseIdRoleViewOrderMeta {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.core;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.core.base.VascBaseIdRoleViewOrderMetaLocal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VascEntryGroupLocal
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nov 23, 2012
|
||||||
|
*/
|
||||||
|
public interface VascEntryGroupLocal extends VascEntryGroup,VascBaseIdRoleViewOrderMetaLocal {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force impl to have public clone methode
|
||||||
|
* @return
|
||||||
|
* @throws CloneNotSupportedException
|
||||||
|
*/
|
||||||
|
public VascEntryGroupLocal clone() throws CloneNotSupportedException;
|
||||||
|
}
|
|
@ -51,7 +51,7 @@ public interface VascEntryLink extends VascBaseIdRoleViewOrderMeta {
|
||||||
/**
|
/**
|
||||||
* @return the vascLinkEntryType
|
* @return the vascLinkEntryType
|
||||||
*/
|
*/
|
||||||
public VascEntryLinkType getVascLinkEntryType();
|
public VascEntryLinkType getVascEntryLinkType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the doActionId
|
* @return the doActionId
|
||||||
|
|
|
@ -46,7 +46,7 @@ public interface VascEntryLinkLocal extends VascEntryLink,VascBaseIdRoleViewOrde
|
||||||
/**
|
/**
|
||||||
* @param vascLinkEntryType the vascLinkEntryType to set
|
* @param vascLinkEntryType the vascLinkEntryType to set
|
||||||
*/
|
*/
|
||||||
public void setVascLinkEntryType(VascEntryLinkType vascLinkEntryType);
|
public void setVascEntryLinkType(VascEntryLinkType vascLinkEntryType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param doActionId the doActionId to set
|
* @param doActionId the doActionId to set
|
||||||
|
|
|
@ -116,6 +116,11 @@ public interface VascEntryLocal extends VascEntry,VascBaseIdRoleCrudLocal {
|
||||||
*/
|
*/
|
||||||
public void setRolesDelete(String rolesDelete);
|
public void setRolesDelete(String rolesDelete);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param accessType the accessType to set
|
||||||
|
*/
|
||||||
|
public void setAccessType(VascEntryAccessType accessType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param vascField the vascField to add
|
* @param vascField the vascField to add
|
||||||
*/
|
*/
|
||||||
|
@ -221,12 +226,12 @@ public interface VascEntryLocal extends VascEntry,VascBaseIdRoleCrudLocal {
|
||||||
*/
|
*/
|
||||||
public Collection<VascEntryLinkLocal> getVascEntryLinksLocal();
|
public Collection<VascEntryLinkLocal> getVascEntryLinksLocal();
|
||||||
|
|
||||||
|
public void setVascFrontendController(VascFrontendController vascFrontendData);
|
||||||
public void setVascFrontendController(VascFrontendController vascFrontendData);
|
|
||||||
|
|
||||||
|
|
||||||
public void setBackendId(String backendId);
|
public void setBackendId(String backendId);
|
||||||
|
|
||||||
|
public void setVascGroupId(String groupId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param vascDisplayOnly the vascDisplayOnly to set
|
* @param vascDisplayOnly the vascDisplayOnly to set
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.impl;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.core.AbstractVascEntryGroupLocal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DefaultVascEntryGroup
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nov 23, 2012
|
||||||
|
*/
|
||||||
|
public class DefaultVascEntryGroup extends AbstractVascEntryGroupLocal {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 853182253019347410L;
|
||||||
|
}
|
|
@ -182,8 +182,8 @@ public class VascDefaultsFinalizer implements VascEntryConfigFinalizer {
|
||||||
if (vle.getVascEntryId()==null) {
|
if (vle.getVascEntryId()==null) {
|
||||||
throw new IllegalArgumentException("All VascLinkEntry need an vascEntryId: "+id);
|
throw new IllegalArgumentException("All VascLinkEntry need an vascEntryId: "+id);
|
||||||
}
|
}
|
||||||
if (vle.getVascLinkEntryType()==null) {
|
if (vle.getVascEntryLinkType()==null) {
|
||||||
vle.setVascLinkEntryType(VascEntryLinkType.DEFAULT_TYPE);
|
vle.setVascEntryLinkType(VascEntryLinkType.DEFAULT_TYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class DefaultVascFrontendHelper implements VascFrontendHelper {
|
||||||
result.add(link);
|
result.add(link);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (type.equals(link.getVascLinkEntryType())) {
|
if (type.equals(link.getVascEntryLinkType())) {
|
||||||
result.add(link);
|
result.add(link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ import net.forwardfire.vasc.core.VascEntryConfigController;
|
||||||
import net.forwardfire.vasc.core.VascEntryController;
|
import net.forwardfire.vasc.core.VascEntryController;
|
||||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||||
import net.forwardfire.vasc.core.VascEntryFieldTypeController;
|
import net.forwardfire.vasc.core.VascEntryFieldTypeController;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryGroup;
|
||||||
import net.forwardfire.vasc.core.VascEventChannelController;
|
import net.forwardfire.vasc.core.VascEventChannelController;
|
||||||
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
||||||
|
|
||||||
|
@ -139,6 +140,15 @@ public class JndiVascControllerFactory implements ObjectFactory {
|
||||||
public VascEntry getVascEntryById(String id) {
|
public VascEntry getVascEntryById(String id) {
|
||||||
return entryController.getVascEntryById(id);
|
return entryController.getVascEntryById(id);
|
||||||
}
|
}
|
||||||
|
public List<String> getVascEntryByGroupId(String groupId) {
|
||||||
|
return entryController.getVascEntryByGroupId(groupId);
|
||||||
|
}
|
||||||
|
public VascEntryGroup getVascEntryGroupById(String id) {
|
||||||
|
return entryController.getVascEntryGroupById(id);
|
||||||
|
}
|
||||||
|
public List<String> getVascEntryGroupIds() {
|
||||||
|
return entryController.getVascEntryGroupIds();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ package net.forwardfire.vasc.impl.x4o;
|
||||||
import net.forwardfire.vasc.core.VascController;
|
import net.forwardfire.vasc.core.VascController;
|
||||||
import net.forwardfire.vasc.core.VascEntryController;
|
import net.forwardfire.vasc.core.VascEntryController;
|
||||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryGroupLocal;
|
||||||
import net.forwardfire.vasc.core.VascEntryLocal;
|
import net.forwardfire.vasc.core.VascEntryLocal;
|
||||||
|
|
||||||
import org.x4o.xml.element.AbstractElementConfigurator;
|
import org.x4o.xml.element.AbstractElementConfigurator;
|
||||||
|
@ -43,14 +44,22 @@ public class VascEntryElementConfigurator extends AbstractElementConfigurator {
|
||||||
* @see org.x4o.xml.element.AbstractElementConfigurator#doConfigEndTag(org.x4o.xml.element.Element)
|
* @see org.x4o.xml.element.AbstractElementConfigurator#doConfigEndTag(org.x4o.xml.element.Element)
|
||||||
*/
|
*/
|
||||||
public void doConfigElement(Element element) throws ElementConfiguratorException {
|
public void doConfigElement(Element element) throws ElementConfiguratorException {
|
||||||
VascEntryLocal entry = (VascEntryLocal)element.getElementObject();
|
Object elementObject = element.getElementObject();
|
||||||
VascController vascController = VascParser.getVascController(element.getElementLanguage());
|
VascController vascController = VascParser.getVascController(element.getElementLanguage());
|
||||||
VascEntryController entryController = vascController.getVascEntryController();
|
VascEntryController entryController = vascController.getVascEntryController();
|
||||||
|
|
||||||
if (entryController instanceof VascEntryControllerLocal) {
|
if (entryController instanceof VascEntryControllerLocal) {
|
||||||
((VascEntryControllerLocal)entryController).addVascEntry(entry);
|
if (elementObject instanceof VascEntryLocal) {
|
||||||
|
VascEntryLocal entry = (VascEntryLocal)elementObject;
|
||||||
|
((VascEntryControllerLocal)entryController).addVascEntry(entry);
|
||||||
|
} else if (elementObject instanceof VascEntryGroupLocal) {
|
||||||
|
VascEntryGroupLocal entryGroup = (VascEntryGroupLocal)elementObject;
|
||||||
|
((VascEntryControllerLocal)entryController).addVascEntryGroup(entryGroup);
|
||||||
|
} else {
|
||||||
|
throw new ElementConfiguratorException(this,"ElementObject is unknown instance: "+elementObject);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new ElementConfiguratorException(this,"Can not add entry '"+entry.getId()+"' to VascEntryController because we have no access to VascEntryControllerLocal interface.");
|
throw new ElementConfiguratorException(this,"Can not run configurator because we have no access to VascEntryControllerLocal interface.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -47,8 +47,14 @@
|
||||||
>
|
>
|
||||||
|
|
||||||
<!-- Object for building an entry -->
|
<!-- Object for building an entry -->
|
||||||
|
<eld:element tag="entryGroup" objectClass="net.forwardfire.vasc.impl.DefaultVascEntryGroup" >
|
||||||
|
<eld:configurator id="entryGroup-VascEntryElementConfigurator" bean.class="net.forwardfire.vasc.impl.x4o.VascEntryElementConfigurator" configAction="true"/>
|
||||||
|
</eld:element>
|
||||||
<eld:element tag="entry" objectClass="net.forwardfire.vasc.impl.DefaultVascEntry" >
|
<eld:element tag="entry" objectClass="net.forwardfire.vasc.impl.DefaultVascEntry" >
|
||||||
<eld:configurator id="entry-VascEntryElementConfigurator" bean.class="net.forwardfire.vasc.impl.x4o.VascEntryElementConfigurator" configAction="true"/>
|
<eld:configurator id="entry-VascEntryElementConfigurator" bean.class="net.forwardfire.vasc.impl.x4o.VascEntryElementConfigurator" configAction="true"/>
|
||||||
|
<eld:attribute name="accessType">
|
||||||
|
<conv:enumConverter enumClass="net.forwardfire.vasc.core.VascEntryAccessType"/>
|
||||||
|
</eld:attribute>
|
||||||
</eld:element>
|
</eld:element>
|
||||||
<eld:element tag="field" objectClass="net.forwardfire.vasc.impl.DefaultVascEntryField" elementClass="net.forwardfire.vasc.impl.x4o.VascEntryFieldElement">
|
<eld:element tag="field" objectClass="net.forwardfire.vasc.impl.DefaultVascEntryField" elementClass="net.forwardfire.vasc.impl.x4o.VascEntryFieldElement">
|
||||||
<eld:attribute name="vascEntryFieldType" runBeanFill="false"/>
|
<eld:attribute name="vascEntryFieldType" runBeanFill="false"/>
|
||||||
|
|
|
@ -13,5 +13,6 @@
|
||||||
<modules>
|
<modules>
|
||||||
<module>vasc-demo-server-build</module>
|
<module>vasc-demo-server-build</module>
|
||||||
<module>vasc-demo-server-core</module>
|
<module>vasc-demo-server-core</module>
|
||||||
|
<module>vasc-demo-server-build-client-swing</module>
|
||||||
</modules>
|
</modules>
|
||||||
</project>
|
</project>
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>vasc-demo-server-build-client-swing</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,42 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>net.forwardfire.vasc.demo</groupId>
|
||||||
|
<artifactId>vasc-demo-server</artifactId>
|
||||||
|
<version>0.4.1-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>vasc-demo-server-build-client-swing</artifactId>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<name>vasc-demo-server-build-client-swing</name>
|
||||||
|
<description>vasc-demo-server-build-client-swing</description>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
|
<version>${maven-assembly-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>build-clients-assembly</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<descriptors>
|
||||||
|
<descriptor>src/main/assembly/bin.xml</descriptor>
|
||||||
|
</descriptors>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.forwardfire.vasc.demo</groupId>
|
||||||
|
<artifactId>vasc-demo-tech-client-swing</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2011, Willem Cazander
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
-->
|
||||||
|
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
|
||||||
|
<id>bin</id>
|
||||||
|
<formats>
|
||||||
|
<format>zip</format>
|
||||||
|
</formats>
|
||||||
|
<includeBaseDirectory>true</includeBaseDirectory>
|
||||||
|
<baseDirectory>vasc-demo-server-build-client-swing-${project.version}</baseDirectory>
|
||||||
|
<dependencySets>
|
||||||
|
<dependencySet>
|
||||||
|
<outputDirectory>/libs</outputDirectory>
|
||||||
|
<useProjectArtifact>false</useProjectArtifact>
|
||||||
|
<unpack>false</unpack>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependencySet>
|
||||||
|
</dependencySets>
|
||||||
|
<fileSets>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.basedir}/src/main/scripts/</directory>
|
||||||
|
<outputDirectory>/</outputDirectory>
|
||||||
|
<fileMode>755</fileMode>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
</assembly>
|
|
@ -0,0 +1,38 @@
|
||||||
|
::
|
||||||
|
:: Copyright (c) 2011, Willem Cazander
|
||||||
|
:: All rights reserved.
|
||||||
|
::
|
||||||
|
:: Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
:: that the following conditions are met:
|
||||||
|
::
|
||||||
|
:: * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
:: following disclaimer.
|
||||||
|
:: * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
:: the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
::
|
||||||
|
:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
:: EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
:: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
:: THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
:: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
:: OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
:: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
:: TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
:: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
::
|
||||||
|
@echo off
|
||||||
|
setlocal enableextensions
|
||||||
|
|
||||||
|
:: Run in app dir
|
||||||
|
cd /d %~dp0
|
||||||
|
|
||||||
|
:: Config variables
|
||||||
|
set JAVA_OPTS=-Xms128m -Xmx512m -XX:MaxPermSize=128m
|
||||||
|
set MAIN_CLASS=net.forwardfire.vasc.demo.client.swing.VascDemoSwingClient
|
||||||
|
set CP=libs\*
|
||||||
|
|
||||||
|
:: Launch application
|
||||||
|
java %JAVA_OPTS% -cp "%CP%" %MAIN_CLASS%
|
||||||
|
|
||||||
|
endlocal
|
||||||
|
:: EOF
|
|
@ -27,8 +27,8 @@ cd `dirname $0`;
|
||||||
|
|
||||||
# Config variables
|
# Config variables
|
||||||
JAVA="java";
|
JAVA="java";
|
||||||
JAVA_OPTS="-Xms64m -Xmx256m";
|
JAVA_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=128m";
|
||||||
MAIN_CLASS="net.forwardfire.vasc.demo.server.core.VascTechDemoStartup";
|
MAIN_CLASS="net.forwardfire.vasc.demo.client.swing.VascDemoSwingClient";
|
||||||
CP=`echo libs/*.jar | sed 's/ /:/g'`;
|
CP=`echo libs/*.jar | sed 's/ /:/g'`;
|
||||||
|
|
||||||
# Launch application
|
# Launch application
|
|
@ -91,5 +91,11 @@
|
||||||
<artifactId>vasc-demo-tech-web</artifactId>
|
<artifactId>vasc-demo-tech-web</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.forwardfire.vasc.demo</groupId>
|
||||||
|
<artifactId>vasc-demo-server-build-client-swing</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
|
@ -50,7 +50,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
</fileSet>
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>${project.basedir}/src/main/scripts/</directory>
|
<directory>${project.basedir}/src/main/scripts/</directory>
|
||||||
<outputDirectory>/</outputDirectory>
|
<outputDirectory>/bin</outputDirectory>
|
||||||
<fileMode>755</fileMode>
|
<fileMode>755</fileMode>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
|
@ -71,5 +71,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
<directory>${project.basedir}/target/docs/</directory>
|
<directory>${project.basedir}/target/docs/</directory>
|
||||||
<outputDirectory>/docs</outputDirectory>
|
<outputDirectory>/docs</outputDirectory>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.parent.basedir}/vasc-demo-server-build-client-swing/target/</directory>
|
||||||
|
<outputDirectory>/clients</outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>vasc-demo-server-build-client-swing-${project.version}-bin.zip</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
</fileSets>
|
</fileSets>
|
||||||
</assembly>
|
</assembly>
|
|
@ -8,14 +8,9 @@
|
||||||
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
|
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
|
||||||
<Listener className="net.forwardfire.vasc.demo.server.tomcat.JndiVascDeployerListener"
|
<Listener className="net.forwardfire.vasc.demo.server.tomcat.JndiVascDeployerListener"
|
||||||
vascControllerName="vasc/server-tech"
|
vascControllerName="vasc/server-tech"
|
||||||
scanPath="conf/server-tech"
|
scanPath="conf/vasc.d"
|
||||||
scanTime="3"
|
scanTime="3"
|
||||||
/>
|
/>
|
||||||
<Listener className="net.forwardfire.vasc.demo.server.tomcat.JndiVascDeployerListener"
|
|
||||||
vascControllerName="vasc/server-admin"
|
|
||||||
scanPath="conf/server-admin"
|
|
||||||
scanTime="9"
|
|
||||||
/>
|
|
||||||
<GlobalNamingResources>
|
<GlobalNamingResources>
|
||||||
<!-- Config Vasc Tech Demo -->
|
<!-- Config Vasc Tech Demo -->
|
||||||
<Environment name="config/START_GUI" value="true" type="java.lang.Boolean"/>
|
<Environment name="config/START_GUI" value="true" type="java.lang.Boolean"/>
|
||||||
|
@ -36,11 +31,6 @@
|
||||||
vascControllerProvider="net.forwardfire.vasc.demo.server.core.VascTechDemoControllerConfig"
|
vascControllerProvider="net.forwardfire.vasc.demo.server.core.VascTechDemoControllerConfig"
|
||||||
removeLocal="false"
|
removeLocal="false"
|
||||||
/>
|
/>
|
||||||
<Resource name="vasc/server-admin" auth="Container" type="net.forwardfire.vasc.core.VascController" singleton="true" scope="Shareable"
|
|
||||||
factory="net.forwardfire.vasc.impl.jndi.JndiVascControllerFactory"
|
|
||||||
vascControllerProvider="net.forwardfire.vasc.demo.server.core.VascTechDemoControllerConfig"
|
|
||||||
removeLocal="false"
|
|
||||||
/>
|
|
||||||
</GlobalNamingResources>
|
</GlobalNamingResources>
|
||||||
<Service name="Catalina">
|
<Service name="Catalina">
|
||||||
<Connector port="8899" protocol="HTTP/1.1" connectionTimeout="5000" redirectPort="9988" />
|
<Connector port="8899" protocol="HTTP/1.1" connectionTimeout="5000" redirectPort="9988" />
|
||||||
|
|
|
@ -3,7 +3,12 @@
|
||||||
xmlns:v="http://vasc.forwardfire.net/xml/ns/vasc-lang"
|
xmlns:v="http://vasc.forwardfire.net/xml/ns/vasc-lang"
|
||||||
xmlns:mm="http://vasc.forwardfire.net/xml/ns/vasc-backend-metamodel"
|
xmlns:mm="http://vasc.forwardfire.net/xml/ns/vasc-backend-metamodel"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
<v:entryGroup
|
||||||
|
id="demo-csv"
|
||||||
|
rolesView="login"
|
||||||
|
/>
|
||||||
|
|
||||||
<mm:csvDataContext
|
<mm:csvDataContext
|
||||||
el.id="metaPeopleDS"
|
el.id="metaPeopleDS"
|
||||||
file="data/demo/meta-people.csv"
|
file="data/demo/meta-people.csv"
|
||||||
|
@ -11,10 +16,10 @@
|
||||||
<mm:metaModelBackend
|
<mm:metaModelBackend
|
||||||
id="metaPeopleBackend"
|
id="metaPeopleBackend"
|
||||||
dataContextProvider="${metaPeopleDS}"
|
dataContextProvider="${metaPeopleDS}"
|
||||||
table="meta_people"
|
table="meta-people"
|
||||||
tableId="id"
|
tableId="id"
|
||||||
/>
|
/>
|
||||||
<v:entry id="metaPeople" backendId="metaPeopleBackend">
|
<v:entry id="metaPeople" backendId="metaPeopleBackend" vascGroupId="demo-csv">
|
||||||
<v:field id="id" list="false"/>
|
<v:field id="id" list="false"/>
|
||||||
<v:field id="name"/>
|
<v:field id="name"/>
|
||||||
<v:field id="age"/>
|
<v:field id="age"/>
|
||||||
|
@ -33,10 +38,10 @@
|
||||||
<mm:metaModelBackend
|
<mm:metaModelBackend
|
||||||
id="metaProjectBackend"
|
id="metaProjectBackend"
|
||||||
dataContextProvider="${metaProjectDS}"
|
dataContextProvider="${metaProjectDS}"
|
||||||
table="meta_project"
|
table="meta-project"
|
||||||
tableId="id"
|
tableId="id"
|
||||||
/>
|
/>
|
||||||
<v:entry id="metaProject" backendId="metaProjectBackend">
|
<v:entry id="metaProject" backendId="metaProjectBackend" vascGroupId="demo-csv">
|
||||||
<v:field id="id" list="false"/>
|
<v:field id="id" list="false"/>
|
||||||
<v:field id="name"/>
|
<v:field id="name"/>
|
||||||
<v:field id="description" vascEntryFieldType="TextAreaField"/>
|
<v:field id="description" vascEntryFieldType="TextAreaField"/>
|
|
@ -25,12 +25,6 @@
|
||||||
</v:entry>
|
</v:entry>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<mm:schemaAutoEntry dataContextProvider="${mmdc_pf}" entryPrefix="pf" />
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<td:tomcatResource name="mmdc/mongo/laura" auth="Container" type="org.eobjects.metamodel.DataContext"
|
<td:tomcatResource name="mmdc/mongo/laura" auth="Container" type="org.eobjects.metamodel.DataContext"
|
||||||
factory="net.forwardfire.vasc.backend.metamodel.jndi.JndiDataContextObjectFactory"
|
factory="net.forwardfire.vasc.backend.metamodel.jndi.JndiDataContextObjectFactory"
|
|
@ -4,11 +4,15 @@
|
||||||
xmlns:mm="http://vasc.forwardfire.net/xml/ns/vasc-backend-metamodel"
|
xmlns:mm="http://vasc.forwardfire.net/xml/ns/vasc-backend-metamodel"
|
||||||
xmlns:td="http://vasc.forwardfire.net/xml/ns/vasc-tech-demo"
|
xmlns:td="http://vasc.forwardfire.net/xml/ns/vasc-tech-demo"
|
||||||
>
|
>
|
||||||
|
<v:entryGroup
|
||||||
|
id="tech-admin"
|
||||||
|
rolesView="admin"
|
||||||
|
/>
|
||||||
<mm:jndiDataSourceDataContext el.id="DemoManagerDataDC" jndiName="java:jdbc/DemoManagerDataDS" />
|
<mm:jndiDataSourceDataContext el.id="DemoManagerDataDC" jndiName="java:jdbc/DemoManagerDataDS" />
|
||||||
|
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascUserBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_USER" tableId="ID" />
|
<mm:metaModelBackend id="AdminVascUserBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_USER" tableId="ID" />
|
||||||
<v:entry id="AdminVascUser" backendId="AdminVascUserBackend" displayNameFieldId="username">
|
<v:entry id="AdminVascUser" backendId="AdminVascUserBackend" displayNameFieldId="username" vascGroupId="tech-admin">
|
||||||
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
||||||
<v:field id="username" backendName="USERNAME"/>
|
<v:field id="username" backendName="USERNAME"/>
|
||||||
<v:field id="password" backendName="PASSWORD"/>
|
<v:field id="password" backendName="PASSWORD"/>
|
||||||
|
@ -17,7 +21,7 @@
|
||||||
|
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascUserRoleBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_USER_ROLE" tableId="ID" />
|
<mm:metaModelBackend id="AdminVascUserRoleBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_USER_ROLE" tableId="ID" />
|
||||||
<v:entry id="AdminVascUserRole" backendId="AdminVascUserRoleBackend" >
|
<v:entry id="AdminVascUserRole" backendId="AdminVascUserRoleBackend" vascGroupId="tech-admin">
|
||||||
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
||||||
<v:field id="username" backendName="USERNAME" vascEntryFieldType="ListField">
|
<v:field id="username" backendName="USERNAME" vascEntryFieldType="ListField">
|
||||||
<v:vascSelectItemModel entryId="AdminVascUser" keyFieldId="username"/>
|
<v:vascSelectItemModel entryId="AdminVascUser" keyFieldId="username"/>
|
||||||
|
@ -27,7 +31,7 @@
|
||||||
|
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascUserChangeFieldBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_USER_CHANGE_FIELD" tableId="ID" />
|
<mm:metaModelBackend id="AdminVascUserChangeFieldBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_USER_CHANGE_FIELD" tableId="ID" />
|
||||||
<v:entry id="AdminVascUserChangeField" backendId="AdminVascUserChangeFieldBackend" adminEditReadOnly="true">
|
<v:entry id="AdminVascUserChangeField" backendId="AdminVascUserChangeFieldBackend" adminEditReadOnly="true" vascGroupId="tech-admin">
|
||||||
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
||||||
<v:field id="field" backendName="FIELD"/>
|
<v:field id="field" backendName="FIELD"/>
|
||||||
<v:field id="name" backendName="NAME"/>
|
<v:field id="name" backendName="NAME"/>
|
||||||
|
@ -36,7 +40,7 @@
|
||||||
|
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascUserChangeLogBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_USER_CHANGE_LOG" tableId="ID" />
|
<mm:metaModelBackend id="AdminVascUserChangeLogBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_USER_CHANGE_LOG" tableId="ID" />
|
||||||
<v:entry id="AdminVascUserChangeLog" backendId="AdminVascUserChangeLogBackend" adminEditReadOnly="true">
|
<v:entry id="AdminVascUserChangeLog" backendId="AdminVascUserChangeLogBackend" adminEditReadOnly="true" vascGroupId="tech-admin">
|
||||||
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
||||||
<v:field id="user_id" backendName="USER_ID" vascEntryFieldType="ListField">
|
<v:field id="user_id" backendName="USER_ID" vascEntryFieldType="ListField">
|
||||||
<v:vascSelectItemModel entryId="AdminVascUser" keyFieldId="id"/>
|
<v:vascSelectItemModel entryId="AdminVascUser" keyFieldId="id"/>
|
||||||
|
@ -49,7 +53,7 @@
|
||||||
</v:entry>
|
</v:entry>
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascPageBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_PAGE" tableId="ID" />
|
<mm:metaModelBackend id="AdminVascPageBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_PAGE" tableId="ID" />
|
||||||
<v:entry id="AdminVascPage" backendId="AdminVascPageBackend">
|
<v:entry id="AdminVascPage" backendId="AdminVascPageBackend" vascGroupId="tech-admin">
|
||||||
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
||||||
<v:field id="slug" backendName="SLUG"/>
|
<v:field id="slug" backendName="SLUG"/>
|
||||||
<v:field id="title" backendName="TITLE"/>
|
<v:field id="title" backendName="TITLE"/>
|
||||||
|
@ -60,7 +64,7 @@
|
||||||
|
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascPagePartBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_PAGE_PART" tableId="ID" />
|
<mm:metaModelBackend id="AdminVascPagePartBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_PAGE_PART" tableId="ID" />
|
||||||
<v:entry id="AdminVascPagePart" backendId="AdminVascPagePartBackend">
|
<v:entry id="AdminVascPagePart" backendId="AdminVascPagePartBackend" vascGroupId="tech-admin">
|
||||||
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
||||||
<v:field id="page_id" backendName="PAGE_ID" vascEntryFieldType="ListField">
|
<v:field id="page_id" backendName="PAGE_ID" vascEntryFieldType="ListField">
|
||||||
<v:vascSelectItemModel entryId="AdminVascPage" keyFieldId="id" displayFieldId="slug"/>
|
<v:vascSelectItemModel entryId="AdminVascPage" keyFieldId="id" displayFieldId="slug"/>
|
||||||
|
@ -78,7 +82,7 @@
|
||||||
|
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascMenuWebBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_MENU_WEB" tableId="ID" />
|
<mm:metaModelBackend id="AdminVascMenuWebBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_MENU_WEB" tableId="ID" />
|
||||||
<v:entry id="AdminVascMenuWeb" backendId="AdminVascMenuWebBackend">
|
<v:entry id="AdminVascMenuWeb" backendId="AdminVascMenuWebBackend" vascGroupId="tech-admin">
|
||||||
<v:listOption id="menu_type" backendName="MENU_TYPE" vascEntryFieldType="ListField" optional="true">
|
<v:listOption id="menu_type" backendName="MENU_TYPE" vascEntryFieldType="ListField" optional="true">
|
||||||
<v:vascSelectItemModelEnum enumClass="net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuWebType"/>
|
<v:vascSelectItemModelEnum enumClass="net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuWebType"/>
|
||||||
</v:listOption>
|
</v:listOption>
|
||||||
|
@ -97,31 +101,4 @@
|
||||||
</v:field>
|
</v:field>
|
||||||
</v:entry>
|
</v:entry>
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascMenuGroupBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_MENU_GROUP" tableId="ID" />
|
|
||||||
<v:entry id="AdminVascMenuGroup" backendId="AdminVascMenuGroupBackend">
|
|
||||||
<v:listOption id="active" backendName="ACTIVE" vascEntryFieldType="ListField" optional="true" defaultValue="FALSE">
|
|
||||||
<v:vascSelectItemModelString nullLabel="All" data="TRUE,FALSE"/>
|
|
||||||
</v:listOption>
|
|
||||||
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
|
||||||
<v:field id="title" backendName="TITLE"/>
|
|
||||||
<v:field id="active" backendName="ACTIVE" vascEntryFieldType="BooleanField"/>
|
|
||||||
<v:field id="roles" backendName="ROLES"/>
|
|
||||||
<v:field id="menu_order" backendName="MENU_ORDER" vascEntryFieldType="IntegerField"/>
|
|
||||||
</v:entry>
|
|
||||||
|
|
||||||
<mm:metaModelBackend id="AdminVascMenuBackend" dataContextProvider="${DemoManagerDataDC}" table="VASC_MENU" tableId="ID" />
|
|
||||||
<v:entry id="AdminVascMenu" backendId="AdminVascMenuBackend">
|
|
||||||
<v:listOption id="active" backendName="ACTIVE" vascEntryFieldType="ListField" optional="true" defaultValue="FALSE">
|
|
||||||
<v:vascSelectItemModelString nullLabel="All" data="TRUE,FALSE"/>
|
|
||||||
</v:listOption>
|
|
||||||
<v:field id="id" backendName="ID" list="false" editReadOnly="true" create="false"/>
|
|
||||||
<v:field id="vascEntryId" backendName="VASC_ENTRY_ID"/>
|
|
||||||
<v:field id="title" backendName="TITLE"/>
|
|
||||||
<v:field id="active" backendName="ACTIVE" vascEntryFieldType="BooleanField"/>
|
|
||||||
<v:field id="roles" backendName="ROLES"/>
|
|
||||||
<v:field id="menu_order" backendName="MENU_ORDER" vascEntryFieldType="IntegerField"/>
|
|
||||||
<v:field id="menu_group" backendName="MENU_GROUP">
|
|
||||||
</v:field>
|
|
||||||
</v:entry>
|
|
||||||
|
|
||||||
</vasc:root>
|
</vasc:root>
|
|
@ -5,6 +5,11 @@
|
||||||
xmlns:td="http://vasc.forwardfire.net/xml/ns/vasc-tech-demo"
|
xmlns:td="http://vasc.forwardfire.net/xml/ns/vasc-tech-demo"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
<v:entryGroup
|
||||||
|
id="tech-server"
|
||||||
|
rolesView="admin"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- Load jndi factories into tomcat. -->
|
<!-- Load jndi factories into tomcat. -->
|
||||||
<td:tomcatResource name="mmdc/server/conf/server.xml" auth="Container" type="org.eobjects.metamodel.DataContext"
|
<td:tomcatResource name="mmdc/server/conf/server.xml" auth="Container" type="org.eobjects.metamodel.DataContext"
|
||||||
factory="net.forwardfire.vasc.backend.metamodel.jndi.JndiDataContextObjectFactory"
|
factory="net.forwardfire.vasc.backend.metamodel.jndi.JndiDataContextObjectFactory"
|
||||||
|
@ -35,10 +40,10 @@
|
||||||
<mm:jndiDataContext el.id="mmdc5" jndiName="java:mmdc/server/conf/web.xml"/>
|
<mm:jndiDataContext el.id="mmdc5" jndiName="java:mmdc/server/conf/web.xml"/>
|
||||||
|
|
||||||
<!-- Auto config schema from MetaModel backends. -->
|
<!-- Auto config schema from MetaModel backends. -->
|
||||||
<mm:schemaAutoEntry dataContextProvider="${mmdc1}" entryPrefix="AdminConfServer" />
|
<mm:schemaAutoEntry vascGroupId="tech-server" dataContextProvider="${mmdc1}" entryPrefix="AdminConfServer" />
|
||||||
<mm:schemaAutoEntry dataContextProvider="${mmdc2}" entryPrefix="AdminConfLogServer" />
|
<mm:schemaAutoEntry vascGroupId="tech-server" dataContextProvider="${mmdc2}" entryPrefix="AdminConfLogServer" />
|
||||||
<mm:schemaAutoEntry dataContextProvider="${mmdc3}" entryPrefix="AdminConfLogAccess" />
|
<mm:schemaAutoEntry vascGroupId="tech-server" dataContextProvider="${mmdc3}" entryPrefix="AdminConfLogAccess" />
|
||||||
<mm:schemaAutoEntry dataContextProvider="${mmdc4}" entryPrefix="AdminConfConfig" />
|
<mm:schemaAutoEntry vascGroupId="tech-server" dataContextProvider="${mmdc4}" entryPrefix="AdminConfConfig" />
|
||||||
<mm:schemaAutoEntry dataContextProvider="${mmdc5}" entryPrefix="AdminConfWeb" />
|
<mm:schemaAutoEntry vascGroupId="tech-server" dataContextProvider="${mmdc5}" entryPrefix="AdminConfWeb" />
|
||||||
|
|
||||||
</vasc:root>
|
</vasc:root>
|
|
@ -25,11 +25,12 @@ setlocal enableextensions
|
||||||
|
|
||||||
:: Run in app dir
|
:: Run in app dir
|
||||||
cd /d %~dp0
|
cd /d %~dp0
|
||||||
|
cd ..
|
||||||
|
|
||||||
:: Config variables
|
:: Config variables
|
||||||
set JAVA_OPTS=-Xms64m -Xmx256m
|
set JAVA_OPTS=-Xms128m -Xmx768m -XX:MaxPermSize=256m
|
||||||
set MAIN_CLASS=net.forwardfire.vasc.demo.server.core.VascTechDemoStartup
|
set MAIN_CLASS=net.forwardfire.vasc.demo.server.core.VascTechDemoStartup
|
||||||
set CP=libs\*
|
set CP=libs\tomcat-el-api-* libs\*
|
||||||
|
|
||||||
:: Launch application
|
:: Launch application
|
||||||
java %JAVA_OPTS% -cp "%CP%" %MAIN_CLASS%
|
java %JAVA_OPTS% -cp "%CP%" %MAIN_CLASS%
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2011, Willem Cazander
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
# the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Run in app dir
|
||||||
|
cd `dirname $0`/..;
|
||||||
|
|
||||||
|
# Config variables
|
||||||
|
JAVA="java";
|
||||||
|
JAVA_OPTS="-Xms128m -Xmx768m -XX:MaxPermSize=256m";
|
||||||
|
MAIN_CLASS="org.apache.catalina.startup.Bootstrap";
|
||||||
|
CP=`echo libs/tomcat-* | sed 's/ /:/g'`;
|
||||||
|
|
||||||
|
# Launch application
|
||||||
|
$JAVA $JAVA_OPTS -cp $CP $MAIN_CLASS stop;
|
||||||
|
|
||||||
|
# EOF
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
::
|
||||||
|
:: Copyright (c) 2011, Willem Cazander
|
||||||
|
:: All rights reserved.
|
||||||
|
::
|
||||||
|
:: Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
:: that the following conditions are met:
|
||||||
|
::
|
||||||
|
:: * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
:: following disclaimer.
|
||||||
|
:: * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
:: the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
::
|
||||||
|
:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
:: EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
:: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
:: THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
:: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
:: OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
:: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
:: TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
:: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
::
|
||||||
|
@echo off
|
||||||
|
setlocal enableextensions
|
||||||
|
|
||||||
|
:: Run in app dir
|
||||||
|
cd /d %~dp0
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
:: Config variables
|
||||||
|
set JAVA_OPTS=-Xms128m -Xmx768m -XX:MaxPermSize=256m
|
||||||
|
set MAIN_CLASS=net.forwardfire.vasc.demo.server.core.VascTechDemoStartup
|
||||||
|
set CP=libs\tomcat-el-api-* libs\*
|
||||||
|
|
||||||
|
:: Launch application
|
||||||
|
java %JAVA_OPTS% -cp "%CP%" %MAIN_CLASS%
|
||||||
|
|
||||||
|
endlocal
|
||||||
|
:: EOF
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2011, Willem Cazander
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
# the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Run in app dir
|
||||||
|
cd `dirname $0`/..;
|
||||||
|
|
||||||
|
# Config variables
|
||||||
|
JAVA="java";
|
||||||
|
JAVA_OPTS="-Xms128m -Xmx768m -XX:MaxPermSize=256m";
|
||||||
|
MAIN_CLASS="net.forwardfire.vasc.demo.server.core.VascTechDemoStartup";
|
||||||
|
CP=`echo libs/tomcat-el-api-* libs/*.jar | sed 's/ /:/g'`;
|
||||||
|
# todo: tomcat-el-api needs loaded before javaee-api for ELResolver config.
|
||||||
|
|
||||||
|
# Launch application
|
||||||
|
$JAVA $JAVA_OPTS -cp $CP $MAIN_CLASS;
|
||||||
|
|
||||||
|
# EOF
|
||||||
|
|
|
@ -170,11 +170,7 @@
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<artifactId>myfaces-impl</artifactId>
|
<artifactId>myfaces-impl</artifactId>
|
||||||
<groupId>org.apache.myfaces.core</groupId>
|
<groupId>org.apache.myfaces.core</groupId>
|
||||||
</exclusion><!--
|
</exclusion>
|
||||||
<exclusion>
|
|
||||||
<artifactId>javaee-api</artifactId>
|
|
||||||
<groupId>org.apache.openejb</groupId>
|
|
||||||
</exclusion> -->
|
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
|
@ -205,6 +205,7 @@ public class VascTechDemoStartup {
|
||||||
serverConfigService.stop();
|
serverConfigService.stop();
|
||||||
tomcatService.stop();
|
tomcatService.stop();
|
||||||
databaseService.stop();
|
databaseService.stop();
|
||||||
|
swingGuiService.stop();
|
||||||
long stopTime = System.currentTimeMillis();
|
long stopTime = System.currentTimeMillis();
|
||||||
logger.info("VascTechDemo shutdown in "+(stopTime-startTime)+" ms.");
|
logger.info("VascTechDemo shutdown in "+(stopTime-startTime)+" ms.");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -28,22 +28,29 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import com.sun.faces.application.ApplicationAssociate;
|
||||||
|
import com.sun.faces.application.ApplicationResourceBundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
||||||
import net.forwardfire.vasc.core.VascController;
|
import net.forwardfire.vasc.core.VascController;
|
||||||
import net.forwardfire.vasc.core.VascEntry;
|
import net.forwardfire.vasc.core.VascEntry;
|
||||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryGroup;
|
||||||
import net.forwardfire.vasc.core.VascEventChannelControllerLocal;
|
import net.forwardfire.vasc.core.VascEventChannelControllerLocal;
|
||||||
import net.forwardfire.vasc.core.VascEventControllerListener;
|
import net.forwardfire.vasc.core.VascEventControllerListener;
|
||||||
import net.forwardfire.vasc.core.VascEventControllerType;
|
import net.forwardfire.vasc.core.VascEventControllerType;
|
||||||
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
||||||
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
||||||
import net.forwardfire.vasc.impl.x4o.VascParser;
|
import net.forwardfire.vasc.impl.x4o.VascParser;
|
||||||
|
import net.forwardfire.vasc.lib.i18n.bundle.RootApplicationBundle;
|
||||||
import net.forwardfire.vasc.test.i18n.VascBundleCheckEntryKeys;
|
import net.forwardfire.vasc.test.i18n.VascBundleCheckEntryKeys;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -127,6 +134,10 @@ public class VascControllerService {
|
||||||
VascEntry ve = vascController.getVascEntryController().getVascEntryById(veId);
|
VascEntry ve = vascController.getVascEntryController().getVascEntryById(veId);
|
||||||
keys.putAll(checker.generateMissingKeys(ve));
|
keys.putAll(checker.generateMissingKeys(ve));
|
||||||
}
|
}
|
||||||
|
for (String groupId:vascController.getVascEntryController().getVascEntryGroupIds()) {
|
||||||
|
VascEntryGroup veg = vascController.getVascEntryController().getVascEntryGroupById(groupId);
|
||||||
|
keys.putAll(checker.generateMissingKeys(veg));
|
||||||
|
}
|
||||||
if (keys.isEmpty()==false) {
|
if (keys.isEmpty()==false) {
|
||||||
Properties p = new Properties();
|
Properties p = new Properties();
|
||||||
File dataDir = new File("data");
|
File dataDir = new File("data");
|
||||||
|
@ -150,6 +161,21 @@ public class VascControllerService {
|
||||||
writePropertiesFile(p,resourceFile);
|
writePropertiesFile(p,resourceFile);
|
||||||
|
|
||||||
ResourceBundle.clearCache();
|
ResourceBundle.clearCache();
|
||||||
|
|
||||||
|
//ApplicationResourceBundle appBundle = ApplicationAssociate.getCurrentInstance().getResourceBundles().get(RootApplicationBundle.class.getName());
|
||||||
|
//Map<Locale, ResourceBundle> resources = getFieldValue(appBundle, "resources");
|
||||||
|
//resources.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private <T> T getFieldValue(Object object, String fieldName) {
|
||||||
|
try {
|
||||||
|
Field field = object.getClass().getDeclaredField(fieldName);
|
||||||
|
field.setAccessible(true);
|
||||||
|
return (T) field.get(object);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,6 @@ import java.util.jar.JarEntry;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import javax.ejb.embeddable.EJBContainer;
|
|
||||||
|
|
||||||
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
||||||
|
|
||||||
import org.apache.catalina.Container;
|
import org.apache.catalina.Container;
|
||||||
|
|
|
@ -22,23 +22,12 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.server.ui;
|
package net.forwardfire.vasc.demo.server.ui;
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.awt.FlowLayout;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.util.Enumeration;
|
|
||||||
import java.util.logging.Handler;
|
import java.util.logging.Handler;
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.LogManager;
|
|
||||||
import java.util.logging.LogRecord;
|
import java.util.logging.LogRecord;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.logging.SimpleFormatter;
|
import java.util.logging.SimpleFormatter;
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JButton;
|
|
||||||
import javax.swing.JCheckBox;
|
|
||||||
import javax.swing.JComboBox;
|
|
||||||
import javax.swing.JLabel;
|
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTextArea;
|
import javax.swing.JTextArea;
|
||||||
|
@ -52,25 +41,19 @@ import javax.swing.SwingUtilities;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 May 12, 2012
|
* @version 1.0 May 12, 2012
|
||||||
*/
|
*/
|
||||||
public class JConsolePanel extends JPanel implements ActionListener {
|
public class JConsolePanel extends JPanel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 485766723433479054L;
|
private static final long serialVersionUID = 485766723433479054L;
|
||||||
private UILogHandler logHandler = null;
|
private UILogHandler logHandler = null;
|
||||||
private JButton clearButton = null;
|
|
||||||
private JComboBox levelBox = null;
|
|
||||||
private JTextArea logTextArea = null;
|
private JTextArea logTextArea = null;
|
||||||
private JCheckBox autoScrollBox = null;
|
|
||||||
private int logLinesMax = 255;
|
private int logLinesMax = 255;
|
||||||
|
|
||||||
public JConsolePanel() {
|
public JConsolePanel() {
|
||||||
setLayout(new FlowLayout(FlowLayout.LEFT));
|
setLayout(new SpringLayout());
|
||||||
JPanel wrap = new JPanel();
|
setBorder(new JFireBorder("Console Log",this));
|
||||||
wrap.setLayout(new SpringLayout());
|
add(createEditor());
|
||||||
wrap.add(createHeader());
|
SpringLayoutGrid.makeCompactGrid(this, 1, 1, 6, 6, 6, 6);
|
||||||
wrap.add(createEditor());
|
|
||||||
SpringLayoutGrid.makeCompactGrid(wrap,2,1);
|
|
||||||
add(wrap);
|
|
||||||
|
|
||||||
Logger rootLogger = Logger.getAnonymousLogger();
|
Logger rootLogger = Logger.getAnonymousLogger();
|
||||||
while (rootLogger.getParent()!=null) {
|
while (rootLogger.getParent()!=null) {
|
||||||
rootLogger = rootLogger.getParent();
|
rootLogger = rootLogger.getParent();
|
||||||
|
@ -93,53 +76,14 @@ public class JConsolePanel extends JPanel implements ActionListener {
|
||||||
rootLogger.removeHandler(logHandler);
|
rootLogger.removeHandler(logHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
private JPanel createHeader() {
|
private JComponent createEditor() {
|
||||||
JPanel result = new JPanel();
|
logTextArea = new JTextArea(6, 80);
|
||||||
result.setBorder(BorderFactory.createLineBorder(Color.BLUE));
|
|
||||||
result.setLayout(new FlowLayout(FlowLayout.LEFT));
|
|
||||||
result.add(new JLabel("Log Level"));
|
|
||||||
levelBox = new JComboBox(new Level[] {Level.OFF,Level.SEVERE,Level.WARNING,Level.INFO,Level.FINE,Level.FINER,Level.FINEST,Level.ALL});
|
|
||||||
levelBox.setSelectedItem(Level.INFO);
|
|
||||||
levelBox.addActionListener(this);
|
|
||||||
result.add(levelBox);
|
|
||||||
clearButton = new JButton("Clear");
|
|
||||||
clearButton.addActionListener(this);
|
|
||||||
result.add(clearButton);
|
|
||||||
autoScrollBox = new JCheckBox("Autoscroll");
|
|
||||||
autoScrollBox.setSelected(true);
|
|
||||||
result.add(autoScrollBox);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private JPanel createEditor() {
|
|
||||||
JPanel result = new JPanel();
|
|
||||||
result.setBorder(BorderFactory.createLineBorder(Color.BLUE));
|
|
||||||
logTextArea = new JTextArea(5, 80);
|
|
||||||
logTextArea.setAutoscrolls(true);
|
logTextArea.setAutoscrolls(true);
|
||||||
logTextArea.setEditable(false);
|
logTextArea.setEditable(false);
|
||||||
JScrollPane logScrollPane = new JScrollPane(logTextArea);
|
JScrollPane scrollPane = new JScrollPane(logTextArea);
|
||||||
logScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||||
logScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
||||||
logScrollPane.getViewport().setOpaque(false);
|
return scrollPane;
|
||||||
result.add(logScrollPane);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
if (clearButton.equals(e.getSource())) {
|
|
||||||
logTextArea.setText("");
|
|
||||||
} else if (levelBox.equals(e.getSource()) && levelBox.getSelectedIndex()!=-1) {
|
|
||||||
Level level = (Level)levelBox.getSelectedItem();
|
|
||||||
logHandler.setLevel(level);
|
|
||||||
Enumeration<String> loggers = LogManager.getLogManager().getLoggerNames();
|
|
||||||
while (loggers.hasMoreElements()) {
|
|
||||||
String name = loggers.nextElement();
|
|
||||||
Logger logger = LogManager.getLogManager().getLogger(name);
|
|
||||||
if (logger!=null && name.contains("pulsefire")) {
|
|
||||||
logger.setLevel(level); // only set pulsefire code loggers
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class UILogHandler extends Handler {
|
class UILogHandler extends Handler {
|
||||||
|
@ -169,9 +113,7 @@ public class JConsolePanel extends JPanel implements ActionListener {
|
||||||
String tt = t.substring(l,t.length());
|
String tt = t.substring(l,t.length());
|
||||||
logTextArea.setText(tt);
|
logTextArea.setText(tt);
|
||||||
}
|
}
|
||||||
if (autoScrollBox.isSelected()) {
|
logTextArea.setCaretPosition(logTextArea.getText().length());
|
||||||
logTextArea.setCaretPosition(logTextArea.getText().length());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,148 @@
|
||||||
|
package net.forwardfire.vasc.demo.server.ui;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.FontMetrics;
|
||||||
|
import java.awt.GradientPaint;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import java.awt.RenderingHints;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseListener;
|
||||||
|
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.UIManager;
|
||||||
|
import javax.swing.border.Border;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JFireBorder
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
*/
|
||||||
|
public class JFireBorder implements Border,MouseListener {
|
||||||
|
|
||||||
|
private int radius;
|
||||||
|
boolean entered = false;
|
||||||
|
private JComponent comp = null;
|
||||||
|
private String title;
|
||||||
|
static private JFireBorder lastFireBorder = null;
|
||||||
|
private GradientPaint gradientNormal = null;
|
||||||
|
private GradientPaint gradientEntered = null;
|
||||||
|
private int gradientWidth = 0;
|
||||||
|
|
||||||
|
public JFireBorder(String title,JComponent comp) {
|
||||||
|
this.radius = 10;
|
||||||
|
this.comp=comp;
|
||||||
|
this.title = title;
|
||||||
|
comp.addMouseListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Insets getBorderInsets(Component c) {
|
||||||
|
return new Insets(getTitleHeight(c)+1, 1, radius-2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isBorderOpaque() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
|
||||||
|
Graphics2D g2 = (Graphics2D)g;
|
||||||
|
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
||||||
|
int titleHeight = getTitleHeight(c);
|
||||||
|
|
||||||
|
if (gradientWidth!=width) {
|
||||||
|
gradientNormal = null;
|
||||||
|
gradientEntered = null;
|
||||||
|
}
|
||||||
|
gradientWidth = width;
|
||||||
|
|
||||||
|
Color endColor = UIManager.getColor("control");
|
||||||
|
if (endColor==null) {
|
||||||
|
endColor = c.getBackground();
|
||||||
|
}
|
||||||
|
Color startColor = UIManager.getColor("nimbusBorder");
|
||||||
|
if (startColor==null) {
|
||||||
|
startColor = c.getForeground();
|
||||||
|
}
|
||||||
|
|
||||||
|
//BufferedImage titleImage = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
|
||||||
|
if (gradientNormal==null) {
|
||||||
|
gradientNormal = new GradientPaint(
|
||||||
|
0, 0, startColor,
|
||||||
|
titleHeight*5, width/3,endColor,
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
if (gradientEntered==null) {
|
||||||
|
startColor = UIManager.getColor("nimbusFocus");
|
||||||
|
if (startColor==null) {
|
||||||
|
startColor = c.getForeground();
|
||||||
|
}
|
||||||
|
gradientEntered = new GradientPaint(
|
||||||
|
0, 0, startColor,
|
||||||
|
titleHeight*5, width/3,endColor,
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
if (entered) {
|
||||||
|
g2.setPaint(gradientEntered);
|
||||||
|
} else {
|
||||||
|
g2.setPaint(gradientNormal);
|
||||||
|
}
|
||||||
|
g2.fillRoundRect(x, y, width, titleHeight, radius, radius);
|
||||||
|
g2.fillRect(x,titleHeight/2,radius+1, titleHeight/2);
|
||||||
|
g2.drawRoundRect(x,y,width-1,height-1,radius,radius);
|
||||||
|
|
||||||
|
if (title==null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Font font = UIManager.getFont("TitledBorder.font");
|
||||||
|
g2.setColor(c.getForeground());
|
||||||
|
FontMetrics metrics = c.getFontMetrics(font);
|
||||||
|
g2.setFont(font);
|
||||||
|
g2.drawString(title,x+8,y+(titleHeight-metrics.getHeight())/2 +metrics.getAscent());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected int getTitleHeight(Component c) {
|
||||||
|
Font font = UIManager.getFont("TitledBorder.font");
|
||||||
|
FontMetrics metrics = c.getFontMetrics(font);
|
||||||
|
return (int)(metrics.getHeight() * 1.40);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GradientPaint getGradient() {
|
||||||
|
if (entered) {
|
||||||
|
return gradientEntered;
|
||||||
|
} else {
|
||||||
|
return gradientNormal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(MouseEvent e) {
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e) {
|
||||||
|
if (entered==true && lastFireBorder==this) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
entered = true;
|
||||||
|
if (comp!=null) {
|
||||||
|
comp.repaint();
|
||||||
|
if (lastFireBorder!=null) {
|
||||||
|
lastFireBorder.entered = false;
|
||||||
|
lastFireBorder.comp.repaint();
|
||||||
|
}
|
||||||
|
lastFireBorder = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e) {
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent e) {
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(MouseEvent e) {
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,20 +0,0 @@
|
||||||
package net.forwardfire.vasc.demo.server.ui;
|
|
||||||
|
|
||||||
import javax.swing.JLabel;
|
|
||||||
import javax.swing.JPanel;
|
|
||||||
import javax.swing.JProgressBar;
|
|
||||||
|
|
||||||
public class JStartupPanel extends JPanel {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -2880272130103870144L;
|
|
||||||
private JProgressBar bar = null;
|
|
||||||
|
|
||||||
public JStartupPanel() {
|
|
||||||
|
|
||||||
JLabel label = new JLabel("Starting up....");
|
|
||||||
add(label);
|
|
||||||
|
|
||||||
bar = new JProgressBar();
|
|
||||||
add(bar);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -22,262 +22,295 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.server.ui;
|
package net.forwardfire.vasc.demo.server.ui;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.Dimension;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.GridLayout;
|
import java.lang.management.ManagementFactory;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.lang.management.ThreadInfo;
|
||||||
import java.awt.event.MouseEvent;
|
import java.lang.management.ThreadMXBean;
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.SpringLayout;
|
||||||
import javax.swing.JSplitPane;
|
|
||||||
import javax.swing.JTabbedPane;
|
|
||||||
import javax.swing.JTree;
|
|
||||||
import javax.swing.ScrollPaneConstants;
|
|
||||||
import javax.swing.SwingUtilities;
|
|
||||||
import javax.swing.event.TreeModelListener;
|
|
||||||
import javax.swing.tree.DefaultMutableTreeNode;
|
|
||||||
import javax.swing.tree.DefaultTreeModel;
|
|
||||||
import javax.swing.tree.TreeNode;
|
|
||||||
|
|
||||||
import net.forwardfire.vasc.core.VascEntryLocal;
|
import org.apache.catalina.Context;
|
||||||
|
import org.apache.catalina.Server;
|
||||||
|
import org.apache.catalina.Service;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.core.VascController;
|
||||||
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
||||||
import net.forwardfire.vasc.demo.server.core.service.VascControllerService;
|
import net.forwardfire.vasc.demo.server.ui.load.JLoadDialog;
|
||||||
import net.forwardfire.vasc.frontend.swing.SwingPanelIntegration;
|
import net.forwardfire.vasc.demo.server.ui.load.JLoadDialog.LoadType;
|
||||||
import net.forwardfire.vasc.frontend.swing.SwingPanelTabbed;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JMainPanel is the main panel/window of this demo.
|
* JStatusPanel is the main panel/window of this demo.
|
||||||
*
|
*
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 May 12, 2012
|
* @version 1.0 May 12, 2012
|
||||||
*/
|
*/
|
||||||
public class JStatusPanel extends JPanel {
|
public class JStatusPanel extends JPanel implements ActionListener {
|
||||||
|
|
||||||
private static final long serialVersionUID = 5834715323973411147L;
|
private static final long serialVersionUID = 5834715323973411147L;
|
||||||
private VascControllerService vascManager = null;
|
private JButton stopButton = null;
|
||||||
private SwingPanelIntegration spi = null;
|
private JButton playButton = null;
|
||||||
private JTabbedPane tabPane = null;
|
private JButton shutdownButton = null;
|
||||||
private JTree vascTree = null;
|
private JButton restartButton = null;
|
||||||
private JSplitPane bottomSplitPane = null;
|
private JButton importJdbcButton = null;
|
||||||
private JSplitPane treeSplitPane = null;
|
private JButton importMongoButton = null;
|
||||||
|
private JButton importDataFileButton = null;
|
||||||
|
private JButton importDataPathButton = null;
|
||||||
|
private JLabel infoStatus = null;
|
||||||
|
private JLabel infoThreads = null;
|
||||||
|
private JLabel infoWorkers = null;
|
||||||
|
private JLabel infoSessions = null;
|
||||||
|
private JLabel infoHttpPort = null;
|
||||||
|
private JLabel infoVascGroups = null;
|
||||||
|
private JLabel infoVascEntries = null;
|
||||||
|
private JLabel infoVascBackends= null;
|
||||||
|
|
||||||
public JStatusPanel() {
|
public JStatusPanel() {
|
||||||
this.vascManager=VascTechDemoStartup.getInstance().getVascControllerService();
|
setLayout(new SpringLayout());
|
||||||
setLayout(new BorderLayout());
|
|
||||||
add(createBottomSplit(), BorderLayout.CENTER);
|
JPanel main = new JPanel();
|
||||||
|
main.setLayout(new SpringLayout());
|
||||||
|
main.add(createPanelInfoServer());
|
||||||
|
main.add(createPanelInfoVasc());
|
||||||
|
main.add(createPanelAction());
|
||||||
|
main.add(createPanelImport());
|
||||||
|
SpringLayoutGrid.makeCompactGrid(main, 2,2,0,0,6,6);
|
||||||
|
|
||||||
|
JConsolePanel consolePanel = new JConsolePanel();
|
||||||
|
add(main);
|
||||||
|
add(consolePanel);
|
||||||
|
SpringLayoutGrid.makeCompactGrid(this, 2,1,6,6,0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private JSplitPane createBottomSplit() {
|
|
||||||
JSplitPane sp0 = createTreeSplit();
|
|
||||||
JPanel sp1 = new JConsolePanel();
|
|
||||||
bottomSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,sp0,sp1);
|
|
||||||
bottomSplitPane.setOneTouchExpandable(true);
|
|
||||||
bottomSplitPane.setResizeWeight(0.2);
|
|
||||||
bottomSplitPane.setDividerLocation(700);
|
|
||||||
sp0.setMinimumSize(new Dimension(400, 400));
|
|
||||||
sp1.setMinimumSize(new Dimension(400, 150));
|
|
||||||
return bottomSplitPane;
|
|
||||||
}
|
|
||||||
|
|
||||||
private JSplitPane createTreeSplit() {
|
|
||||||
JScrollPane sp0 = createTreePane();
|
|
||||||
JScrollPane sp1 = createContentPane();
|
|
||||||
treeSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,sp0,sp1);
|
|
||||||
treeSplitPane.setOneTouchExpandable(true);
|
|
||||||
treeSplitPane.setResizeWeight(0.7);
|
|
||||||
treeSplitPane.setDividerLocation(200);
|
|
||||||
sp0.setMinimumSize(new Dimension(200, 400));
|
|
||||||
sp1.setMinimumSize(new Dimension(400, 400));
|
|
||||||
return treeSplitPane;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VascTreeModel extends DefaultTreeModel {
|
|
||||||
public VascTreeModel(TreeNode root) {
|
|
||||||
super(root);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -7436681803506994277L;
|
private JPanel createPanelInfoVasc() {
|
||||||
|
JPanel statusPanel = new JPanel();
|
||||||
|
statusPanel.setBorder(new JFireBorder("Info Vasc",statusPanel));
|
||||||
|
statusPanel.setLayout(new SpringLayout());
|
||||||
|
|
||||||
|
infoVascGroups = new JLabel("0");
|
||||||
|
infoVascEntries = new JLabel("0");
|
||||||
|
infoVascBackends = new JLabel("0");
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Artifact:"));
|
||||||
|
statusPanel.add(new JLabel("vasc-demo-server-core"));
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Version:"));
|
||||||
|
statusPanel.add(new JLabel("0.X.X"));
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Groups:"));
|
||||||
|
statusPanel.add(infoVascGroups);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Entries:"));
|
||||||
|
statusPanel.add(infoVascEntries);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Backends:"));
|
||||||
|
statusPanel.add(infoVascBackends);
|
||||||
|
|
||||||
|
SpringLayoutGrid.makeCompactGrid(statusPanel, 5, 2);
|
||||||
|
return statusPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel createPanelInfoServer() {
|
||||||
|
JPanel statusPanel = new JPanel();
|
||||||
|
statusPanel.setBorder(new JFireBorder("Info Server",statusPanel));
|
||||||
|
statusPanel.setLayout(new SpringLayout());
|
||||||
|
|
||||||
|
infoStatus = new JLabel("booting");
|
||||||
|
infoThreads = new JLabel("0");
|
||||||
|
infoWorkers = new JLabel("0");
|
||||||
|
infoSessions = new JLabel("0");
|
||||||
|
infoHttpPort = new JLabel("0");
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Running:"));
|
||||||
|
statusPanel.add(infoStatus);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("HttpPort:"));
|
||||||
|
statusPanel.add(infoHttpPort);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Threads:"));
|
||||||
|
statusPanel.add(infoThreads);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Workers:"));
|
||||||
|
statusPanel.add(infoWorkers);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Sessions:"));
|
||||||
|
statusPanel.add(infoSessions);
|
||||||
|
|
||||||
|
SpringLayoutGrid.makeCompactGrid(statusPanel, 5, 2);
|
||||||
|
return statusPanel;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
private JPanel createPanelImport() {
|
||||||
public void addTreeModelListener(TreeModelListener l) {
|
JPanel statusPanel = new JPanel();
|
||||||
super.addTreeModelListener(l);
|
statusPanel.setBorder(new JFireBorder("Import",statusPanel));
|
||||||
|
statusPanel.setLayout(new SpringLayout());
|
||||||
|
|
||||||
|
importJdbcButton = new JButton("Jdbc");
|
||||||
|
importMongoButton = new JButton("Mongo");
|
||||||
|
importDataFileButton = new JButton("DataFile");
|
||||||
|
importDataPathButton = new JButton("DataPath");
|
||||||
|
|
||||||
|
importJdbcButton.addActionListener(this);
|
||||||
|
importMongoButton.addActionListener(this);
|
||||||
|
importDataFileButton.addActionListener(this);
|
||||||
|
importDataPathButton.addActionListener(this);
|
||||||
|
|
||||||
|
importJdbcButton.setEnabled(false);
|
||||||
|
importMongoButton.setEnabled(false);
|
||||||
|
importDataFileButton.setEnabled(false);
|
||||||
|
importDataPathButton.setEnabled(false);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Import Jdbc:"));
|
||||||
|
statusPanel.add(importJdbcButton);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Import Mongo:"));
|
||||||
|
statusPanel.add(importMongoButton);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Import File:"));
|
||||||
|
statusPanel.add(importDataFileButton);
|
||||||
|
|
||||||
|
statusPanel.add(new JLabel("Data Directory:"));
|
||||||
|
statusPanel.add(importDataPathButton);
|
||||||
|
|
||||||
|
SpringLayoutGrid.makeCompactGrid(statusPanel,2,4,6,6,0,0);
|
||||||
|
return statusPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private JPanel createPanelAction() {
|
||||||
|
JPanel actionPanel = new JPanel();
|
||||||
|
actionPanel.setBorder(new JFireBorder("Actions",actionPanel));
|
||||||
|
actionPanel.setLayout(new SpringLayout());
|
||||||
|
|
||||||
|
actionPanel.add(new JLabel("Catalina:"));
|
||||||
|
|
||||||
|
playButton = new JButton("Play");
|
||||||
|
playButton.setEnabled(false);
|
||||||
|
playButton.addActionListener(this);
|
||||||
|
actionPanel.add(playButton);
|
||||||
|
|
||||||
|
stopButton = new JButton("Stop");
|
||||||
|
stopButton.setEnabled(false);
|
||||||
|
stopButton.addActionListener(this);
|
||||||
|
actionPanel.add(stopButton);
|
||||||
|
|
||||||
|
actionPanel.add(new JLabel("Application:"));
|
||||||
|
|
||||||
|
restartButton = new JButton("Restart");
|
||||||
|
restartButton.setEnabled(false);
|
||||||
|
restartButton.addActionListener(this);
|
||||||
|
actionPanel.add(restartButton);
|
||||||
|
|
||||||
|
shutdownButton = new JButton("Shutdown");
|
||||||
|
shutdownButton.setEnabled(false);
|
||||||
|
shutdownButton.addActionListener(this);
|
||||||
|
actionPanel.add(shutdownButton);
|
||||||
|
|
||||||
|
SpringLayoutGrid.makeCompactGrid(actionPanel,2,3,6,6,0,0);
|
||||||
|
return actionPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startupDone() {
|
||||||
|
infoStatus.setText("running");
|
||||||
|
|
||||||
|
//restartButton.setEnabled(true);
|
||||||
|
shutdownButton.setEnabled(true);
|
||||||
|
|
||||||
|
importJdbcButton.setEnabled(true);
|
||||||
|
importMongoButton.setEnabled(true);
|
||||||
|
//importDataFileButton.setEnabled(true);
|
||||||
|
//importDataPathButton.setEnabled(true);
|
||||||
|
|
||||||
|
updateInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (e.getSource().equals(shutdownButton)) {
|
||||||
|
VascTechDemoStartup.getInstance().shutdown();
|
||||||
|
} else if (e.getSource().equals(importJdbcButton)) {
|
||||||
|
JLoadDialog dialog = new JLoadDialog(ServerGuiApplication.getInstance().getMainFrame(),LoadType.JDBC);
|
||||||
|
dialog.setVisible(true);
|
||||||
|
} else if (e.getSource().equals(importMongoButton)) {
|
||||||
|
JLoadDialog dialog = new JLoadDialog(ServerGuiApplication.getInstance().getMainFrame(),LoadType.MONGODB);
|
||||||
|
dialog.setVisible(true);
|
||||||
|
} else if (e.getSource().equals(importDataFileButton)) {
|
||||||
|
JLoadDialog dialog = new JLoadDialog(ServerGuiApplication.getInstance().getMainFrame(),LoadType.JDBC);
|
||||||
|
dialog.setVisible(true);
|
||||||
|
} else if (e.getSource().equals(importDataPathButton)) {
|
||||||
|
JLoadDialog dialog = new JLoadDialog(ServerGuiApplication.getInstance().getMainFrame(),LoadType.JDBC);
|
||||||
|
dialog.setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private JScrollPane createTreePane() {
|
public void updateInfo() {
|
||||||
|
|
||||||
DefaultMutableTreeNode root = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.NONE,null));
|
VascController vc = VascTechDemoStartup.getInstance().getVascControllerService().getVascController();
|
||||||
|
if (vc==null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Server server = VascTechDemoStartup.getInstance().getTomcatService().getServer();
|
||||||
|
if (server==null) {
|
||||||
|
return; // still booting
|
||||||
|
}
|
||||||
|
Service service = server.findService("Catalina");
|
||||||
|
if (service==null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Context demoContext = VascTechDemoStartup.getInstance().getTomcatService().getApplicationContext();
|
||||||
|
|
||||||
vascTree = new JTree(new VascTreeModel(root));
|
infoVascGroups.setText(""+vc.getVascEntryController().getVascEntryGroupIds().size());
|
||||||
vascTree.addMouseListener(new MouseAdapter() {
|
infoVascEntries.setText(""+vc.getVascEntryController().getVascEntryIds().size());
|
||||||
@Override
|
infoVascBackends.setText(""+vc.getVascBackendController().getVascBackendIds().size());
|
||||||
public void mouseClicked(MouseEvent e) {
|
|
||||||
super.mouseClicked(e);
|
int httpPort = service.findConnectors()[0].getPort();
|
||||||
if (e.getClickCount() == 2 && vascTree.getSelectionModel().isSelectionEmpty()==false) {
|
infoHttpPort.setText(""+httpPort);
|
||||||
try {
|
infoThreads.setText(""+Thread.activeCount());
|
||||||
DefaultMutableTreeNode node = (DefaultMutableTreeNode)vascTree.getSelectionModel().getSelectionPath().getLastPathComponent();
|
|
||||||
if (node.getUserObject() instanceof String) {
|
int sessions = 0;
|
||||||
return;
|
int workers = 0;
|
||||||
}
|
|
||||||
VascTreeNode vascNode = (VascTreeNode)node.getUserObject();
|
if (demoContext!=null) {
|
||||||
if (vascNode != null) {
|
sessions = demoContext.getManager().getActiveSessions();
|
||||||
if (vascNode.type == VascTreeNodeType.ENTRY) {
|
}
|
||||||
VascEntryLocal ee = (VascEntryLocal)vascManager.getVascController().getVascEntryController().getVascEntryById(vascNode.id);
|
|
||||||
vascManager.getVascController().getVascEntryConfigController().configVascFrontendController(vascManager.getVascController(), ee);
|
ThreadMXBean man = ManagementFactory.getThreadMXBean();
|
||||||
spi.createNewVascView(ee);
|
ThreadInfo[] infos = man.getThreadInfo(man.getAllThreadIds());
|
||||||
}
|
for (ThreadInfo info:infos) {
|
||||||
}
|
if (info.getThreadName()!=null && info.getThreadName().startsWith("http")) {
|
||||||
} catch (Exception ee) {
|
workers++;
|
||||||
ee.printStackTrace();
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
infoWorkers.setText(""+workers);
|
||||||
|
infoSessions.setText(""+sessions);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
|
||||||
|
JMenuItem openXmlItem = new JMenuItem("Import Xml");
|
||||||
|
openXmlItem.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
try {
|
||||||
|
final JFileChooser fc = new JFileChooser();
|
||||||
|
//fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||||
|
int returnVal = fc.showOpenDialog((JMenuItem)e.getSource());
|
||||||
|
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File file = fc.getSelectedFile();
|
||||||
|
//VascTechDemoStartup.getInstance().getVascControllerService().openFile(file);
|
||||||
}
|
}
|
||||||
|
} catch (Exception e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
});
|
||||||
JPanel treePanel = new JPanel();
|
|
||||||
treePanel.setLayout(new GridLayout(1,0));
|
|
||||||
JScrollPane p = createJScrollPane(treePanel);
|
|
||||||
p.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
|
||||||
p.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
|
|
||||||
treePanel.add(vascTree);
|
|
||||||
|
|
||||||
rebuildTree();
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
private JScrollPane createContentPane() {
|
|
||||||
JPanel contentPane = new JPanel();
|
|
||||||
contentPane.setLayout(new GridLayout(1,0));
|
|
||||||
JScrollPane p = createJScrollPane(contentPane);
|
|
||||||
|
|
||||||
tabPane = new JTabbedPane();
|
|
||||||
spi = new SwingPanelTabbed(tabPane);
|
|
||||||
contentPane.add(tabPane);
|
|
||||||
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
private JScrollPane createJScrollPane(JPanel innerPanel) {
|
|
||||||
JScrollPane scrollPane = new JScrollPane(innerPanel);
|
|
||||||
scrollPane.setBorder(BorderFactory.createEmptyBorder());
|
|
||||||
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
|
|
||||||
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
|
||||||
scrollPane.getVerticalScrollBar().setUnitIncrement(10);
|
|
||||||
scrollPane.getHorizontalScrollBar().setUnitIncrement(10);
|
|
||||||
//innerPanel.setParentScrollPane(scrollPane);
|
|
||||||
return scrollPane;
|
|
||||||
}
|
|
||||||
|
|
||||||
class VascTreeNode implements Serializable {
|
|
||||||
private static final long serialVersionUID = -1177727401194030822L;
|
|
||||||
public VascTreeNode() {}
|
|
||||||
public VascTreeNode(VascTreeNodeType type,String id) { this.type=type;this.id=id; }
|
|
||||||
public VascTreeNode(VascTreeNodeType type,String id,String entryId) { this.type=type;this.id=id;this.entryId=entryId; }
|
|
||||||
VascTreeNodeType type;
|
|
||||||
String id;
|
|
||||||
String entryId;
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
enum VascTreeNodeType {
|
|
||||||
NONE,
|
|
||||||
FIELD_TYPE,
|
|
||||||
BACKEND,
|
|
||||||
ENTRY
|
|
||||||
}
|
|
||||||
|
|
||||||
public void rebuildTree() {
|
|
||||||
|
|
||||||
DefaultMutableTreeNode root = (DefaultMutableTreeNode)vascTree.getModel().getRoot();
|
|
||||||
root.removeAllChildren();
|
|
||||||
|
|
||||||
DefaultMutableTreeNode fieldTypes = new DefaultMutableTreeNode("VascFieldTypes");
|
|
||||||
for (String id:vascManager.getVascController().getVascEntryFieldTypeController().getVascEntryFieldTypeIds()) {
|
|
||||||
DefaultMutableTreeNode typeNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.FIELD_TYPE,id));
|
|
||||||
fieldTypes.add(typeNode);
|
|
||||||
}
|
|
||||||
root.add(fieldTypes);
|
|
||||||
|
|
||||||
DefaultMutableTreeNode backends = new DefaultMutableTreeNode("VascBackends");
|
|
||||||
for (String id:vascManager.getVascController().getVascBackendController().getVascBackendIds()) {
|
|
||||||
DefaultMutableTreeNode backendNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.BACKEND,id));
|
|
||||||
backends.add(backendNode);
|
|
||||||
}
|
|
||||||
root.add(backends);
|
|
||||||
|
|
||||||
DefaultMutableTreeNode entries = new DefaultMutableTreeNode("VascEntries");
|
|
||||||
for (String id:vascManager.getVascController().getVascEntryController().getVascEntryIds()) {
|
|
||||||
//VascEntry ve = vascManager.getVascController().getVascEntryController().getVascEntryById(id);
|
|
||||||
DefaultMutableTreeNode entryNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY,id));
|
|
||||||
entries.add(entryNode);
|
|
||||||
/*
|
|
||||||
DefaultMutableTreeNode fields = new DefaultMutableTreeNode("Fields");
|
|
||||||
for (VascEntryField vef:ve.getVascEntryFields()) {
|
|
||||||
DefaultMutableTreeNode vefNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD,vef.getId(),id));
|
|
||||||
fields.add(vefNode);
|
|
||||||
}
|
|
||||||
entryNode.add(fields);
|
|
||||||
|
|
||||||
DefaultMutableTreeNode fieldSets = new DefaultMutableTreeNode("FieldSets");
|
|
||||||
for (VascEntryFieldSet vefs:ve.getVascEntryFieldSets()) {
|
|
||||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,vefs.getId(),id));
|
|
||||||
fieldSets.add(vefsNode);
|
|
||||||
}
|
|
||||||
entryNode.add(fieldSets);
|
|
||||||
|
|
||||||
DefaultMutableTreeNode links = new DefaultMutableTreeNode("Links");
|
|
||||||
for (VascLinkEntry vle:ve.getVascLinkEntries()) {
|
|
||||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,vle.getId()));
|
|
||||||
links.add(vefsNode);
|
|
||||||
}
|
|
||||||
entryNode.add(links);
|
|
||||||
|
|
||||||
DefaultMutableTreeNode filters = new DefaultMutableTreeNode("Backend Filters");
|
|
||||||
for (VascBackendFilter vbf:ve.getVascBackendFilters()) {
|
|
||||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,vbf.getClass().getSimpleName()));
|
|
||||||
filters.add(vefsNode);
|
|
||||||
}
|
|
||||||
entryNode.add(links);
|
|
||||||
|
|
||||||
DefaultMutableTreeNode param = new DefaultMutableTreeNode("Backend Parameters");
|
|
||||||
for (String key:ve.getEntryParameterKeys()) {
|
|
||||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,key));
|
|
||||||
param.add(vefsNode);
|
|
||||||
}
|
|
||||||
entryNode.add(param);
|
|
||||||
|
|
||||||
|
|
||||||
DefaultMutableTreeNode options = new DefaultMutableTreeNode("List Options");
|
|
||||||
for (VascEntryField vef:ve.getListOptions()) {
|
|
||||||
DefaultMutableTreeNode vefsNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY_FIELD_SET,vef.getId()));
|
|
||||||
options.add(vefsNode);
|
|
||||||
}
|
|
||||||
entryNode.add(options);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
root.add(entries);
|
|
||||||
|
|
||||||
SwingUtilities.updateComponentTreeUI(vascTree);
|
|
||||||
}
|
|
||||||
|
|
||||||
public JTabbedPane getTabPane() {
|
|
||||||
return tabPane;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void changeEvent() {
|
|
||||||
rebuildTree();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,28 +23,32 @@
|
||||||
package net.forwardfire.vasc.demo.server.ui;
|
package net.forwardfire.vasc.demo.server.ui;
|
||||||
|
|
||||||
import java.awt.AWTException;
|
import java.awt.AWTException;
|
||||||
import java.awt.CheckboxMenuItem;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Image;
|
import java.awt.Font;
|
||||||
import java.awt.Menu;
|
|
||||||
import java.awt.MenuItem;
|
import java.awt.MenuItem;
|
||||||
import java.awt.PopupMenu;
|
import java.awt.PopupMenu;
|
||||||
import java.awt.SystemTray;
|
import java.awt.SystemTray;
|
||||||
import java.awt.TrayIcon;
|
import java.awt.TrayIcon;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.WindowAdapter;
|
||||||
|
import java.awt.event.WindowEvent;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.EventObject;
|
import java.util.EventObject;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JTabbedPane;
|
import javax.swing.JOptionPane;
|
||||||
|
import javax.swing.UIManager;
|
||||||
|
|
||||||
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
||||||
|
|
||||||
import org.jdesktop.application.Application;
|
|
||||||
import org.jdesktop.application.FrameView;
|
import org.jdesktop.application.FrameView;
|
||||||
import org.jdesktop.application.SingleFrameApplication;
|
import org.jdesktop.application.SingleFrameApplication;
|
||||||
import org.jdesktop.application.Application.ExitListener;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SwingGuiService Shows the demo swing gui and vasc swing frontend.
|
* SwingGuiService Shows the demo swing gui and vasc swing frontend.
|
||||||
|
@ -54,77 +58,113 @@ import org.jdesktop.application.Application.ExitListener;
|
||||||
*/
|
*/
|
||||||
public class ServerGuiApplication extends SingleFrameApplication {
|
public class ServerGuiApplication extends SingleFrameApplication {
|
||||||
|
|
||||||
|
private Logger logger = null;
|
||||||
|
private JStatusPanel statusPanel = null;
|
||||||
|
private ImageIcon serverIcon = null;
|
||||||
|
|
||||||
|
public ServerGuiApplication() {
|
||||||
|
logger = Logger.getLogger(ServerGuiApplication.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
protected void startup() {
|
protected void startup() {
|
||||||
addExitListener(new ShutdownManager());
|
installColorsLaF();
|
||||||
|
addExitListener(new CloseWindowExitListener());
|
||||||
|
serverIcon = createImageIcon("/net/forwardfire/vasc/demo/server/ui/resources/icon.png", "Vasc Icon");
|
||||||
|
statusPanel = new JStatusPanel();
|
||||||
FrameView mainView = getMainView();
|
FrameView mainView = getMainView();
|
||||||
|
mainView.setComponent(statusPanel);
|
||||||
mainView.setComponent(new JStartupPanel());
|
mainView.getFrame().setMinimumSize(new Dimension(640,480));
|
||||||
mainView.getFrame().setMinimumSize(new Dimension(600,200));
|
mainView.getFrame().setMaximumSize(new Dimension(800,600));
|
||||||
//mainView.getFrame().setResizable(false);
|
mainView.getFrame().addWindowListener(new UpdateInfoListener());
|
||||||
|
|
||||||
show(mainView);
|
show(mainView);
|
||||||
|
|
||||||
startSystemTray();
|
startSystemTray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startupDone() {
|
class UpdateInfoListener extends WindowAdapter {
|
||||||
getMainFrame().setVisible(false);
|
@Override
|
||||||
|
public void windowActivated(WindowEvent e) {
|
||||||
|
System.out.println("vis: opened -ac");
|
||||||
|
statusPanel.updateInfo();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void windowDeactivated(WindowEvent e) {
|
||||||
|
System.out.println("vis: closed - ac");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CloseWindowExitListener implements ExitListener {
|
||||||
|
@Override
|
||||||
|
public boolean canExit(EventObject event) {
|
||||||
|
if (event!=null && event.getSource().equals(ServerGuiApplication.this)) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
ServerGuiApplication.getInstance().getMainFrame().setVisible(false);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void willExit(EventObject event) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startupDone() {
|
||||||
|
statusPanel.startupDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop if requested from service
|
||||||
|
*/
|
||||||
public void stop() {
|
public void stop() {
|
||||||
exit();
|
//shutdown();
|
||||||
|
exit(new EventObject(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ImageIcon getServerIcon() {
|
||||||
|
return serverIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public ServerGuiApplication getInstance() {
|
static public ServerGuiApplication getInstance() {
|
||||||
return getInstance(ServerGuiApplication.class);
|
return getInstance(ServerGuiApplication.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
class ShutdownManager implements ExitListener {
|
|
||||||
public boolean canExit(EventObject e) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
public void willExit(EventObject event) {
|
|
||||||
VascTechDemoStartup.getInstance().shutdown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startSystemTray() {
|
private void startSystemTray() {
|
||||||
if (!SystemTray.isSupported()) {
|
if (!SystemTray.isSupported()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final PopupMenu popup = new PopupMenu();
|
final PopupMenu popup = new PopupMenu();
|
||||||
final TrayIcon trayIcon = new TrayIcon(createImage("/net/forwardfire/vasc/demo/server/ui/resources/tray-icon.png", "tray icon"));
|
final TrayIcon trayIcon = new TrayIcon(createImageIcon("/net/forwardfire/vasc/demo/server/ui/resources/tray-icon.png", "tray icon").getImage());
|
||||||
final SystemTray tray = SystemTray.getSystemTray();
|
final SystemTray tray = SystemTray.getSystemTray();
|
||||||
|
|
||||||
MenuItem aboutItem = new MenuItem("About");
|
MenuItem aboutItem = new MenuItem("About");
|
||||||
MenuItem statusItem = new MenuItem("View Status");
|
aboutItem.addActionListener(new ActionListener() {
|
||||||
MenuItem logItem = new MenuItem("View Log");
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
JOptionPane.showMessageDialog(ServerGuiApplication.getInstance().getMainFrame(), "Vasc Demo Tech Server:\nIs build to test and demo different parts of the vasc package.", "About Vasc Demo", JOptionPane.PLAIN_MESSAGE);
|
||||||
Menu displayMenu = new Menu("Launch");
|
}
|
||||||
MenuItem errorItem = new MenuItem("Web client");
|
});
|
||||||
MenuItem warningItem = new MenuItem("Swing client");
|
MenuItem statusItem = new MenuItem("Open Status");
|
||||||
MenuItem infoItem = new MenuItem("Swt client");
|
statusItem.addActionListener(new ActionListener() {
|
||||||
MenuItem noneItem = new MenuItem("None");
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
getMainFrame().setVisible(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
MenuItem exitItem = new MenuItem("Exit");
|
MenuItem exitItem = new MenuItem("Exit");
|
||||||
exitItem.addActionListener(new ActionListener() {
|
exitItem.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent arg0) {
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
exit();
|
VascTechDemoStartup.getInstance().shutdown();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
popup.add(aboutItem);
|
|
||||||
popup.addSeparator();
|
|
||||||
popup.add(statusItem);
|
|
||||||
popup.add(logItem);
|
|
||||||
popup.addSeparator();
|
|
||||||
popup.add(displayMenu);
|
|
||||||
displayMenu.add(errorItem);
|
|
||||||
displayMenu.add(warningItem);
|
|
||||||
displayMenu.add(infoItem);
|
|
||||||
displayMenu.add(noneItem);
|
|
||||||
popup.add(exitItem);
|
popup.add(exitItem);
|
||||||
|
popup.addSeparator();
|
||||||
|
popup.add(aboutItem);
|
||||||
|
popup.add(statusItem);
|
||||||
|
|
||||||
trayIcon.setPopupMenu(popup);
|
trayIcon.setPopupMenu(popup);
|
||||||
|
|
||||||
|
@ -135,11 +175,45 @@ public class ServerGuiApplication extends SingleFrameApplication {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static Image createImage(String path, String description) {
|
protected static ImageIcon createImageIcon(String path, String description) {
|
||||||
URL imageURL = ServerGuiApplication.class.getResource(path);
|
URL imageURL = ServerGuiApplication.class.getResource(path);
|
||||||
if (imageURL == null) {
|
if (imageURL == null) {
|
||||||
throw new NullPointerException("Could not find resource: "+path);
|
throw new NullPointerException("Could not find resource: "+path);
|
||||||
}
|
}
|
||||||
return (new ImageIcon(imageURL, description)).getImage();
|
return new ImageIcon(imageURL, description);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String installColorsLaF() {
|
||||||
|
UIManager.put("TabbedPane.font", Font.decode("SansSerif-BOLD-12"));
|
||||||
|
UIManager.put("TitledBorder.font", Font.decode("SansSerif-BOLD-16"));
|
||||||
|
UIManager.put("FireDial.font", Font.decode("SansSerif-9"));
|
||||||
|
|
||||||
|
String colorName = "laf-colors";
|
||||||
|
ClassLoader cl = Thread.currentThread().getContextClassLoader();
|
||||||
|
if (cl==null) {
|
||||||
|
cl = this.getClass().getClassLoader();
|
||||||
|
}
|
||||||
|
InputStream in = cl.getResourceAsStream("net/forwardfire/vasc/demo/server/ui/resources/"+colorName+".properties");
|
||||||
|
if (in==null) {
|
||||||
|
logger.warning("Color schema not found: "+colorName);
|
||||||
|
return "unknown";
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Properties p = new Properties();
|
||||||
|
p.load(in);
|
||||||
|
for (Object key:p.keySet()) {
|
||||||
|
String value = p.getProperty(key.toString());
|
||||||
|
Color colorValue = Color.decode(value);
|
||||||
|
UIManager.put(key,colorValue);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.warning("Could not load color schema: "+colorName+" error: "+e.getMessage());
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
in.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return colorName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,241 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
import java.awt.Frame;
|
||||||
|
import java.awt.GridLayout;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.WindowAdapter;
|
||||||
|
import java.awt.event.WindowEvent;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.swing.BorderFactory;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JDialog;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
|
import org.eobjects.metamodel.jdbc.JdbcDataContext;
|
||||||
|
import org.eobjects.metamodel.mongodb.MongoDbDataContext;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.demo.server.ui.JFireBorder;
|
||||||
|
import net.forwardfire.vasc.demo.server.ui.ServerGuiApplication;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JLoadDialog mini wizzard for loading.
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 May 9, 2012
|
||||||
|
*/
|
||||||
|
public class JLoadDialog extends JDialog implements ActionListener {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -8638394652416472734L;
|
||||||
|
private JButton prev = null;
|
||||||
|
private JButton next = null;
|
||||||
|
private JButton cancel = null;
|
||||||
|
private List<LoadStep> steps = null;
|
||||||
|
private int currentStep = 0;
|
||||||
|
private LoadStepData model = null;
|
||||||
|
private JPanel centerPanel = null;
|
||||||
|
private JLabel topLabel = null;
|
||||||
|
|
||||||
|
public enum LoadType {
|
||||||
|
CSV,
|
||||||
|
JDBC,
|
||||||
|
MONGODB
|
||||||
|
}
|
||||||
|
|
||||||
|
public JLoadDialog(Frame aFrame,LoadType type) {
|
||||||
|
setTitle("Load Edit Data");
|
||||||
|
setIconImage(ServerGuiApplication.getInstance().getServerIcon().getImage());
|
||||||
|
setMinimumSize(new Dimension(640,400));
|
||||||
|
setPreferredSize(new Dimension(640,400));
|
||||||
|
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||||
|
addWindowListener(new WindowAdapter() {
|
||||||
|
public void windowClosing(WindowEvent we) {
|
||||||
|
clearAndHide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
JPanel mainPanel = new JPanel();
|
||||||
|
// mainPanel.setBorder();
|
||||||
|
// mainPanel.setLayout(new SpringLayout());
|
||||||
|
mainPanel.setLayout(new BorderLayout());
|
||||||
|
mainPanel.add(createPanelTop(),BorderLayout.PAGE_START);
|
||||||
|
|
||||||
|
JPanel wrap = new JPanel();
|
||||||
|
wrap.setLayout(new GridLayout(1,1));
|
||||||
|
wrap.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
||||||
|
|
||||||
|
centerPanel = new JPanel();
|
||||||
|
//centerPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
|
||||||
|
centerPanel.setLayout(new GridLayout(1,1));
|
||||||
|
centerPanel.setBorder(new JFireBorder(null,centerPanel));
|
||||||
|
|
||||||
|
wrap.add(centerPanel);
|
||||||
|
mainPanel.add(wrap,BorderLayout.CENTER);
|
||||||
|
|
||||||
|
model = new LoadStepData();
|
||||||
|
steps = new ArrayList<LoadStep>(10);
|
||||||
|
|
||||||
|
switch(type) {
|
||||||
|
case CSV:
|
||||||
|
break;
|
||||||
|
case JDBC:
|
||||||
|
steps.add(new JLoadStepMetaJdbc());
|
||||||
|
break;
|
||||||
|
case MONGODB:
|
||||||
|
steps.add(new JLoadStepMetaMongodb());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
steps.add(new JLoadStepSelectTables());
|
||||||
|
steps.add(new JLoadStepMiscInfo());
|
||||||
|
steps.add(new JLoadStepWriteFile());
|
||||||
|
|
||||||
|
centerPanel.add(steps.get(0).getPanel());
|
||||||
|
|
||||||
|
mainPanel.add(createPanelBottom(),BorderLayout.PAGE_END);
|
||||||
|
//SpringLayoutGrid.makeCompactGrid(mainPanel, 3, 1,6,6,6,6);
|
||||||
|
getContentPane().add(mainPanel);
|
||||||
|
pack();
|
||||||
|
setLocationRelativeTo(aFrame);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearAndHide() {
|
||||||
|
setVisible(false);
|
||||||
|
|
||||||
|
// clean up connection
|
||||||
|
if (model.dc instanceof JdbcDataContext) {
|
||||||
|
JdbcDataContext dc = (JdbcDataContext)model.dc;
|
||||||
|
try {
|
||||||
|
dc.getConnection().close();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (model.dc instanceof MongoDbDataContext) {
|
||||||
|
MongoDbDataContext dc = (MongoDbDataContext)model.dc;
|
||||||
|
dc.getMongoDb().getMongo().close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel createPanelTop() {
|
||||||
|
JPanel top = new JPanel();
|
||||||
|
top.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
||||||
|
top.setLayout(new GridLayout(1,1));
|
||||||
|
JPanel wrap = new JPanel();
|
||||||
|
wrap.setLayout(new FlowLayout(FlowLayout.LEFT));
|
||||||
|
wrap.setBorder(new JFireBorder("Load",top));
|
||||||
|
topLabel = new JLabel("Load data to edit...");
|
||||||
|
wrap.add(topLabel);
|
||||||
|
top.add(wrap);
|
||||||
|
return top;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel createPanelBottom() {
|
||||||
|
JPanel bottom = new JPanel();
|
||||||
|
bottom.setLayout(new FlowLayout(FlowLayout.RIGHT));
|
||||||
|
|
||||||
|
prev = new JButton("Prev");
|
||||||
|
next = new JButton("Next");
|
||||||
|
cancel = new JButton("Cancel");
|
||||||
|
|
||||||
|
prev.addActionListener(this);
|
||||||
|
next.addActionListener(this);
|
||||||
|
cancel.addActionListener(this);
|
||||||
|
|
||||||
|
prev.setEnabled(false);
|
||||||
|
|
||||||
|
bottom.add(prev);
|
||||||
|
bottom.add(next);
|
||||||
|
bottom.add(cancel);
|
||||||
|
|
||||||
|
return bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (e.getSource().equals(prev)) {
|
||||||
|
gotoStepPrev();
|
||||||
|
} else if (e.getSource().equals(next)) {
|
||||||
|
gotoStepNext();
|
||||||
|
} if (e.getSource().equals(cancel)) {
|
||||||
|
clearAndHide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void gotoStepPrev() {
|
||||||
|
if (currentStep <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
currentStep--;
|
||||||
|
centerPanel.removeAll();
|
||||||
|
LoadStep step = steps.get(currentStep);
|
||||||
|
centerPanel.add(step.getPanel());
|
||||||
|
topLabel.setText(step.getStepTitle());
|
||||||
|
step.setupStep(model);
|
||||||
|
SwingUtilities.updateComponentTreeUI(centerPanel);
|
||||||
|
if (currentStep==0) {
|
||||||
|
prev.setEnabled(false);
|
||||||
|
}
|
||||||
|
next.setText("Next");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void gotoStepNext() {
|
||||||
|
if (currentStep == steps.size()-1) {
|
||||||
|
// perform last step
|
||||||
|
LoadStep step = steps.get(currentStep);
|
||||||
|
boolean result = step.performStep(model);
|
||||||
|
if (result==false) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
clearAndHide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (currentStep > steps.size()-1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LoadStep step = steps.get(currentStep);
|
||||||
|
boolean result = step.performStep(model);
|
||||||
|
if (result==false) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
currentStep++;
|
||||||
|
centerPanel.removeAll();
|
||||||
|
step = steps.get(currentStep);
|
||||||
|
centerPanel.add(step.getPanel());
|
||||||
|
topLabel.setText(step.getStepTitle());
|
||||||
|
step.setupStep(model);
|
||||||
|
SwingUtilities.updateComponentTreeUI(centerPanel);
|
||||||
|
if (currentStep==steps.size()-1) {
|
||||||
|
next.setText("Finish");
|
||||||
|
}
|
||||||
|
prev.setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,27 +20,23 @@
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.server.ui.actions;
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Frame;
|
import java.awt.Frame;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.WindowAdapter;
|
|
||||||
import java.awt.event.WindowEvent;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JDialog;
|
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextCsv;
|
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextCsv;
|
||||||
import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry;
|
import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry;
|
||||||
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JDialogMetaCsv Add and runs MetaModel Schema Auto Entry code.
|
* JDialogMetaCsv Add and runs MetaModel Schema Auto Entry code.
|
||||||
|
@ -48,29 +44,21 @@ import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 May 9, 2012
|
* @version 1.0 May 9, 2012
|
||||||
*/
|
*/
|
||||||
public class JDialogMetaCsv extends JDialog implements ActionListener {
|
public class JLoadStepMetaCsv extends JPanel implements ActionListener {
|
||||||
|
|
||||||
private static final long serialVersionUID = -8638394652416472734L;
|
private static final long serialVersionUID = -8638394652416472734L;
|
||||||
|
|
||||||
public JDialogMetaCsv(Frame aFrame) {
|
public JLoadStepMetaCsv(Frame aFrame) {
|
||||||
setTitle("Add csv file");
|
//setTitle("Add csv file");
|
||||||
setMinimumSize(new Dimension(640,480));
|
setMinimumSize(new Dimension(640,480));
|
||||||
setPreferredSize(new Dimension(999,666));
|
setPreferredSize(new Dimension(999,666));
|
||||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
|
||||||
addWindowListener(new WindowAdapter() {
|
|
||||||
public void windowClosing(WindowEvent we) {
|
|
||||||
clearAndHide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
JPanel mainPanel = new JPanel();
|
JPanel mainPanel = new JPanel();
|
||||||
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
||||||
mainPanel.setLayout(new BorderLayout());
|
mainPanel.setLayout(new BorderLayout());
|
||||||
//mainPanel.add(createPanelTop(),BorderLayout.NORTH);
|
//mainPanel.add(createPanelTop(),BorderLayout.NORTH);
|
||||||
mainPanel.add(createPanelCenter(),BorderLayout.CENTER);
|
mainPanel.add(createPanelCenter(),BorderLayout.CENTER);
|
||||||
//mainPanel.add(createPanelBottom(),BorderLayout.SOUTH);
|
//mainPanel.add(createPanelBottom(),BorderLayout.SOUTH);
|
||||||
getContentPane().add(mainPanel);
|
add(mainPanel);
|
||||||
pack();
|
|
||||||
setLocationRelativeTo(aFrame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearAndHide() {
|
public void clearAndHide() {
|
||||||
|
@ -95,7 +83,7 @@ public class JDialogMetaCsv extends JDialog implements ActionListener {
|
||||||
MetaModelSchemaAutoEntry schema = new MetaModelSchemaAutoEntry();
|
MetaModelSchemaAutoEntry schema = new MetaModelSchemaAutoEntry();
|
||||||
schema.setDataContextProvider(ds);
|
schema.setDataContextProvider(ds);
|
||||||
schema.setEntryPrefix(file.getName());
|
schema.setEntryPrefix(file.getName());
|
||||||
schema.autoCreateEntries(VascTechDemoStartup.getInstance().getVascControllerService().getVascController());
|
//schema.autoCreateEntries(VascTechDemoStartup.getInstance().getVascControllerService().getVascController());
|
||||||
//VascTechDemoStartup.getInstance().getVascControllerService().fireChangeEvent();
|
//VascTechDemoStartup.getInstance().getVascControllerService().fireChangeEvent();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,28 +20,21 @@
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.server.ui.actions;
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.FlowLayout;
|
||||||
import java.awt.Dimension;
|
import java.sql.Connection;
|
||||||
import java.awt.Frame;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.awt.event.WindowAdapter;
|
|
||||||
import java.awt.event.WindowEvent;
|
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
|
||||||
import javax.swing.JButton;
|
|
||||||
import javax.swing.JComboBox;
|
import javax.swing.JComboBox;
|
||||||
import javax.swing.JDialog;
|
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JTextField;
|
import javax.swing.JTextField;
|
||||||
import javax.swing.SpringLayout;
|
import javax.swing.SpringLayout;
|
||||||
|
|
||||||
|
import org.eobjects.metamodel.jdbc.JdbcDataContext;
|
||||||
|
|
||||||
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextJdbc;
|
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextJdbc;
|
||||||
import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry;
|
|
||||||
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
|
||||||
import net.forwardfire.vasc.demo.server.ui.SpringLayoutGrid;
|
import net.forwardfire.vasc.demo.server.ui.SpringLayoutGrid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,7 +43,7 @@ import net.forwardfire.vasc.demo.server.ui.SpringLayoutGrid;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 May 9, 2012
|
* @version 1.0 May 9, 2012
|
||||||
*/
|
*/
|
||||||
public class JDialogMetaJdbc extends JDialog implements ActionListener {
|
public class JLoadStepMetaJdbc extends JPanel implements LoadStep {
|
||||||
|
|
||||||
private static final long serialVersionUID = -8638394652416472734L;
|
private static final long serialVersionUID = -8638394652416472734L;
|
||||||
private JComboBox driverClassBox = null;
|
private JComboBox driverClassBox = null;
|
||||||
|
@ -59,31 +52,19 @@ public class JDialogMetaJdbc extends JDialog implements ActionListener {
|
||||||
private JTextField passwordField = null;
|
private JTextField passwordField = null;
|
||||||
|
|
||||||
|
|
||||||
public JDialogMetaJdbc(Frame aFrame) {
|
public JLoadStepMetaJdbc() {
|
||||||
setTitle("Add jdbc");
|
setLayout(new FlowLayout(FlowLayout.LEFT));
|
||||||
setMinimumSize(new Dimension(300,200));
|
add(createPanelCenter());
|
||||||
setPreferredSize(new Dimension(500,400));
|
|
||||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
|
||||||
addWindowListener(new WindowAdapter() {
|
|
||||||
public void windowClosing(WindowEvent we) {
|
|
||||||
clearAndHide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
JPanel mainPanel = new JPanel();
|
|
||||||
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
|
||||||
mainPanel.setLayout(new BorderLayout());
|
|
||||||
//mainPanel.add(createPanelTop(),BorderLayout.NORTH);
|
|
||||||
mainPanel.add(createPanelCenter(),BorderLayout.CENTER);
|
|
||||||
//mainPanel.add(createPanelBottom(),BorderLayout.SOUTH);
|
|
||||||
getContentPane().add(mainPanel);
|
|
||||||
pack();
|
|
||||||
setLocationRelativeTo(aFrame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearAndHide() {
|
public String getStepTitle() {
|
||||||
setVisible(false);
|
return "Connect to database.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JPanel getPanel() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public JPanel createPanelCenter() {
|
public JPanel createPanelCenter() {
|
||||||
JPanel result = new JPanel();
|
JPanel result = new JPanel();
|
||||||
result.setLayout(new SpringLayout());
|
result.setLayout(new SpringLayout());
|
||||||
|
@ -105,32 +86,41 @@ public class JDialogMetaJdbc extends JDialog implements ActionListener {
|
||||||
passwordField = new JTextField("postgresql");
|
passwordField = new JTextField("postgresql");
|
||||||
result.add(passwordField);
|
result.add(passwordField);
|
||||||
|
|
||||||
JButton fileButton = new JButton("Connect");
|
SpringLayoutGrid.makeCompactGrid(result, 4, 2);
|
||||||
fileButton.addActionListener(new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
String url = connectUrlField.getText();
|
|
||||||
MetaModelDataContextJdbc ds = new MetaModelDataContextJdbc();
|
|
||||||
ds.setDriverClass((String)driverClassBox.getSelectedItem());
|
|
||||||
ds.setConnectUrl(url);
|
|
||||||
ds.setUsername(usernameField.getText());
|
|
||||||
ds.setPassword(passwordField.getText());
|
|
||||||
String dbName = url.substring(url.lastIndexOf('/')+1,url.length());
|
|
||||||
MetaModelSchemaAutoEntry schema = new MetaModelSchemaAutoEntry();
|
|
||||||
schema.setDataContextProvider(ds);
|
|
||||||
schema.setEntryPrefix(dbName);
|
|
||||||
schema.autoCreateEntries(VascTechDemoStartup.getInstance().getVascControllerService().getVascController());
|
|
||||||
//VascTechDemoStartup.getInstance().getVascControllerService().fireChangeEvent();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
result.add(fileButton);
|
|
||||||
result.add(new JLabel(""));
|
|
||||||
|
|
||||||
SpringLayoutGrid.makeCompactGrid(result, 5, 2);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent arg0) {
|
public void setupStep(LoadStepData model) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean performStep(LoadStepData model) {
|
||||||
|
String url = connectUrlField.getText();
|
||||||
|
MetaModelDataContextJdbc ds = new MetaModelDataContextJdbc();
|
||||||
|
ds.setDriverClass((String)driverClassBox.getSelectedItem());
|
||||||
|
ds.setConnectUrl(url);
|
||||||
|
ds.setUsername(usernameField.getText());
|
||||||
|
ds.setPassword(passwordField.getText());
|
||||||
|
String dbName = url.substring(url.lastIndexOf('/')+1,url.length());
|
||||||
|
|
||||||
|
try {
|
||||||
|
Connection c = ds.getConnection();
|
||||||
|
c.close();
|
||||||
|
|
||||||
|
if (model.dc instanceof JdbcDataContext) {
|
||||||
|
JdbcDataContext dc = (JdbcDataContext)model.dc;
|
||||||
|
dc.getConnection().close();
|
||||||
|
}
|
||||||
|
|
||||||
|
model.dcProvider = ds;
|
||||||
|
model.dc=ds.getDataContext();
|
||||||
|
model.name=dbName;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(null, "Fatal connect error:\n"+e.getMessage(), "Jdbc Connect Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -20,65 +20,49 @@
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.server.ui.actions;
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.FlowLayout;
|
||||||
import java.awt.Dimension;
|
|
||||||
import java.awt.Frame;
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.WindowAdapter;
|
|
||||||
import java.awt.event.WindowEvent;
|
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
|
||||||
import javax.swing.JButton;
|
|
||||||
import javax.swing.JDialog;
|
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JTextField;
|
import javax.swing.JTextField;
|
||||||
import javax.swing.SpringLayout;
|
import javax.swing.SpringLayout;
|
||||||
|
|
||||||
|
import org.eobjects.metamodel.mongodb.MongoDbDataContext;
|
||||||
|
|
||||||
|
import com.mongodb.DB;
|
||||||
|
|
||||||
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextMongodb;
|
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextMongodb;
|
||||||
import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry;
|
|
||||||
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
|
||||||
import net.forwardfire.vasc.demo.server.ui.SpringLayoutGrid;
|
import net.forwardfire.vasc.demo.server.ui.SpringLayoutGrid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JDialogMetaMongodb Add and runs MetaModel Schema Auto Entry code.
|
* JLoadStepMetaMongodb Add and runs MetaModel Schema Auto Entry code.
|
||||||
*
|
*
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 May 9, 2012
|
* @version 1.0 May 9, 2012
|
||||||
*/
|
*/
|
||||||
public class JDialogMetaMongodb extends JDialog implements ActionListener {
|
public class JLoadStepMetaMongodb extends JPanel implements LoadStep,ActionListener {
|
||||||
|
|
||||||
private static final long serialVersionUID = -8638394652416472734L;
|
private static final long serialVersionUID = -8638394652416472734L;
|
||||||
private JTextField hostNameField = null;
|
private JTextField hostNameField = null;
|
||||||
private JTextField hostPortField = null;
|
private JTextField hostPortField = null;
|
||||||
private JTextField databaseField = null;
|
private JTextField databaseField = null;
|
||||||
|
|
||||||
public JDialogMetaMongodb(Frame aFrame) {
|
public JLoadStepMetaMongodb() {
|
||||||
setTitle("Add mongodb");
|
setLayout(new FlowLayout(FlowLayout.LEFT));
|
||||||
setMinimumSize(new Dimension(300,200));
|
add(createPanelCenter());
|
||||||
setPreferredSize(new Dimension(400,300));
|
|
||||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
|
||||||
addWindowListener(new WindowAdapter() {
|
|
||||||
public void windowClosing(WindowEvent we) {
|
|
||||||
clearAndHide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
JPanel mainPanel = new JPanel();
|
|
||||||
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
|
|
||||||
mainPanel.setLayout(new BorderLayout());
|
|
||||||
//mainPanel.add(createPanelTop(),BorderLayout.NORTH);
|
|
||||||
mainPanel.add(createPanelCenter(),BorderLayout.CENTER);
|
|
||||||
//mainPanel.add(createPanelBottom(),BorderLayout.SOUTH);
|
|
||||||
getContentPane().add(mainPanel);
|
|
||||||
pack();
|
|
||||||
setLocationRelativeTo(aFrame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearAndHide() {
|
public String getStepTitle() {
|
||||||
setVisible(false);
|
return "Connect to mongodb.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getPanel() {
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JPanel createPanelCenter() {
|
public JPanel createPanelCenter() {
|
||||||
|
@ -86,7 +70,7 @@ public class JDialogMetaMongodb extends JDialog implements ActionListener {
|
||||||
result.setLayout(new SpringLayout());
|
result.setLayout(new SpringLayout());
|
||||||
|
|
||||||
result.add(new JLabel("Hostname"));
|
result.add(new JLabel("Hostname"));
|
||||||
hostNameField = new JTextField("localhost");
|
hostNameField = new JTextField("localhost",25);
|
||||||
result.add(hostNameField);
|
result.add(hostNameField);
|
||||||
|
|
||||||
result.add(new JLabel("Port"));
|
result.add(new JLabel("Port"));
|
||||||
|
@ -96,31 +80,45 @@ public class JDialogMetaMongodb extends JDialog implements ActionListener {
|
||||||
result.add(new JLabel("Database"));
|
result.add(new JLabel("Database"));
|
||||||
databaseField = new JTextField("lefiona");
|
databaseField = new JTextField("lefiona");
|
||||||
result.add(databaseField);
|
result.add(databaseField);
|
||||||
|
|
||||||
JButton fileButton = new JButton("Connect");
|
SpringLayoutGrid.makeCompactGrid(result, 3, 2);
|
||||||
fileButton.addActionListener(new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
MetaModelDataContextMongodb ds = new MetaModelDataContextMongodb();
|
|
||||||
ds.setHostname(hostNameField.getText());
|
|
||||||
ds.setPort(new Integer(hostPortField.getText()));
|
|
||||||
ds.setDatabase(databaseField.getText());
|
|
||||||
|
|
||||||
MetaModelSchemaAutoEntry schema = new MetaModelSchemaAutoEntry();
|
|
||||||
schema.setDataContextProvider(ds);
|
|
||||||
schema.setEntryPrefix(ds.getDatabase());
|
|
||||||
schema.autoCreateEntries(VascTechDemoStartup.getInstance().getVascControllerService().getVascController());
|
|
||||||
//VascTechDemoStartup.getInstance().getVascControllerService().fireChangeEvent();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
result.add(fileButton);
|
|
||||||
result.add(new JLabel(""));
|
|
||||||
|
|
||||||
SpringLayoutGrid.makeCompactGrid(result, 4, 2);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent arg0) {
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setupStep(LoadStepData model) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean performStep(LoadStepData model) {
|
||||||
|
|
||||||
|
MetaModelDataContextMongodb ds = new MetaModelDataContextMongodb();
|
||||||
|
ds.setHostname(hostNameField.getText());
|
||||||
|
ds.setPort(new Integer(hostPortField.getText()));
|
||||||
|
ds.setDatabase(databaseField.getText());
|
||||||
|
|
||||||
|
try {
|
||||||
|
DB mongoDB = ds.getMongodbConnection();
|
||||||
|
mongoDB.getMongo().close();
|
||||||
|
|
||||||
|
if (model.dc instanceof MongoDbDataContext) {
|
||||||
|
MongoDbDataContext dc = (MongoDbDataContext)model.dc;
|
||||||
|
dc.getMongoDb().getMongo().close();
|
||||||
|
}
|
||||||
|
|
||||||
|
model.dcProvider = ds;
|
||||||
|
model.dc=ds.getDataContext();
|
||||||
|
model.name=ds.getDatabase();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(null, "Fatal connect error:\n"+e.getMessage(), "Jdbc Connect Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
import javax.swing.SpringLayout;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.demo.server.ui.SpringLayoutGrid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JLoadStepMiscInfo
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nov 21, 2012
|
||||||
|
*/
|
||||||
|
public class JLoadStepMiscInfo extends JPanel implements LoadStep {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -8638394652416472734L;
|
||||||
|
private JTextField filenameField = null;
|
||||||
|
private JTextField groupIdField = null;
|
||||||
|
private JTextField rolesGroupField = null;
|
||||||
|
private JTextField rolesEntryField = null;
|
||||||
|
|
||||||
|
public JLoadStepMiscInfo() {
|
||||||
|
setLayout(new FlowLayout(FlowLayout.LEFT));
|
||||||
|
add(createPanelCenter());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStepTitle() {
|
||||||
|
return "Select Info";
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getPanel() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel createPanelCenter() {
|
||||||
|
JPanel result = new JPanel();
|
||||||
|
result.setLayout(new SpringLayout());
|
||||||
|
|
||||||
|
filenameField = new JTextField();
|
||||||
|
groupIdField = new JTextField();
|
||||||
|
rolesGroupField = new JTextField();
|
||||||
|
rolesEntryField = new JTextField();
|
||||||
|
|
||||||
|
result.add(new JLabel("Filename:"));
|
||||||
|
result.add(filenameField);
|
||||||
|
result.add(new JLabel("groupId:"));
|
||||||
|
result.add(groupIdField);
|
||||||
|
result.add(new JLabel("rolesGroup:"));
|
||||||
|
result.add(rolesGroupField);
|
||||||
|
result.add(new JLabel("rolesEntry:"));
|
||||||
|
result.add(rolesEntryField);
|
||||||
|
|
||||||
|
SpringLayoutGrid.makeCompactGrid(result, 4, 2);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setupStep(LoadStepData model) {
|
||||||
|
filenameField.setText(model.name+".xml");
|
||||||
|
groupIdField.setText(model.name);
|
||||||
|
rolesGroupField.setText("login,admin");
|
||||||
|
rolesEntryField.setText("login,admin");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean performStep(LoadStepData model) {
|
||||||
|
model.filename = filenameField.getText();
|
||||||
|
model.groupId = groupIdField.getText();
|
||||||
|
model.rolesGroup = rolesGroupField.getText();
|
||||||
|
model.rolesEntry = rolesEntryField.getText();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,180 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
import javax.swing.JTable;
|
||||||
|
import javax.swing.ScrollPaneConstants;
|
||||||
|
import javax.swing.SpringLayout;
|
||||||
|
import javax.swing.table.AbstractTableModel;
|
||||||
|
|
||||||
|
import org.eobjects.metamodel.DataContext;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.demo.server.ui.SpringLayoutGrid;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JLoadStepSelectTables select tables to load.
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 May 9, 2012
|
||||||
|
*/
|
||||||
|
public class JLoadStepSelectTables extends JPanel implements LoadStep {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -8638394652416472734L;
|
||||||
|
private JTable table = null;
|
||||||
|
private MetaModelTableModel tableModel = null;
|
||||||
|
private DataContext dcOld = null;
|
||||||
|
|
||||||
|
public JLoadStepSelectTables() {
|
||||||
|
setLayout(new SpringLayout());
|
||||||
|
add(createPanelCenter());
|
||||||
|
SpringLayoutGrid.makeCompactGrid(this, 1, 1, 6, 6, 6, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStepTitle() {
|
||||||
|
return "Select Tables";
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getPanel() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JComponent createPanelCenter() {
|
||||||
|
tableModel = new MetaModelTableModel();
|
||||||
|
table = new JTable(tableModel);
|
||||||
|
table.setFillsViewportHeight(true);
|
||||||
|
table.setShowHorizontalLines(true);
|
||||||
|
table.setAutoscrolls(true);
|
||||||
|
//((JComponent) table.getDefaultRenderer(Boolean.class)).setOpaque(true);// let backgroup color work correctly
|
||||||
|
JScrollPane scrollPane = new JScrollPane(table);
|
||||||
|
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||||
|
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
||||||
|
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
|
||||||
|
return scrollPane;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setupStep(LoadStepData model) {
|
||||||
|
if (model.tables.isEmpty() | (dcOld!=null && dcOld!=model.dc)) {
|
||||||
|
tableModel.setData(Arrays.asList(model.dc.getDefaultSchema().getTableNames()));
|
||||||
|
dcOld = model.dc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean performStep(LoadStepData model) {
|
||||||
|
model.tables.clear();
|
||||||
|
for (TableRow row:tableModel.getData()) {
|
||||||
|
if (row.load) {
|
||||||
|
model.tables.add(row.table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TableRow {
|
||||||
|
String table;
|
||||||
|
boolean load = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
class MetaModelTableModel extends AbstractTableModel {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 5487313677918103654L;
|
||||||
|
private List<TableRow> data = new ArrayList<TableRow>();
|
||||||
|
|
||||||
|
public void setData(List<String> tables) {
|
||||||
|
data.clear();
|
||||||
|
for (String table:tables) {
|
||||||
|
TableRow row = new TableRow();
|
||||||
|
row.table=table;
|
||||||
|
data.add(row);
|
||||||
|
}
|
||||||
|
fireTableDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TableRow> getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<?> getColumnClass(int columnIndex) {
|
||||||
|
if (columnIndex==0) {
|
||||||
|
return String.class;
|
||||||
|
} else {
|
||||||
|
return Boolean.class;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getColumnCount() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getColumnName(int columnIndex) {
|
||||||
|
if (columnIndex==0) {
|
||||||
|
return "TableName";
|
||||||
|
} else {
|
||||||
|
return "Import";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRowCount() {
|
||||||
|
return data.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||||
|
TableRow row = data.get(rowIndex);
|
||||||
|
if (columnIndex==0) {
|
||||||
|
return row.table;
|
||||||
|
} else {
|
||||||
|
return new Boolean(row.load);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||||
|
return columnIndex>0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setValueAt(Object value, int rowIndex, int columnIndex) {
|
||||||
|
if (columnIndex==1) {
|
||||||
|
TableRow row = data.get(rowIndex);
|
||||||
|
if (value instanceof Boolean) {
|
||||||
|
row.load = (Boolean)value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,118 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.OutputStreamWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.io.Writer;
|
||||||
|
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
import javax.swing.JTextArea;
|
||||||
|
import javax.swing.ScrollPaneConstants;
|
||||||
|
import javax.swing.SpringLayout;
|
||||||
|
|
||||||
|
import org.x4o.xml.sax.XMLWriter;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.core.VascController;
|
||||||
|
import net.forwardfire.vasc.demo.server.core.VascTechDemoStartup;
|
||||||
|
import net.forwardfire.vasc.demo.server.ui.SpringLayoutGrid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JLoadStepWriteFile writes the file.
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nov 21, 2012
|
||||||
|
*/
|
||||||
|
public class JLoadStepWriteFile extends JPanel implements LoadStep,ActionListener {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -8638394652416472734L;
|
||||||
|
private JTextArea text = null;
|
||||||
|
|
||||||
|
public JLoadStepWriteFile() {
|
||||||
|
setLayout(new SpringLayout());
|
||||||
|
add(createPanelCenter());
|
||||||
|
SpringLayoutGrid.makeCompactGrid(this, 1, 1, 6, 6, 6, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStepTitle() {
|
||||||
|
return "Select Tables";
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getPanel() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JComponent createPanelCenter() {
|
||||||
|
text = new JTextArea(13,45);
|
||||||
|
text.setAutoscrolls(true);
|
||||||
|
JScrollPane scrollPane = new JScrollPane(text);
|
||||||
|
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||||
|
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
||||||
|
return scrollPane;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setupStep(LoadStepData model) {
|
||||||
|
try {
|
||||||
|
VascController vc = VascTechDemoStartup.getInstance().getVascControllerService().getVascController();
|
||||||
|
StringWriter out = new StringWriter();
|
||||||
|
XMLWriter outXml = new XMLWriter(out);
|
||||||
|
LoadVascXmlWriter writer = new LoadVascXmlWriter(outXml,vc);
|
||||||
|
writer.writeXml(model);
|
||||||
|
|
||||||
|
text.setText(out.getBuffer().toString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean performStep(LoadStepData model) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
VascController vc = VascTechDemoStartup.getInstance().getVascControllerService().getVascController();
|
||||||
|
File tmpFile = new File("conf/vasc.d/"+model.filename);// File.createTempFile("vasc","xml");
|
||||||
|
System.out.println("write to : "+tmpFile);
|
||||||
|
Writer out = new OutputStreamWriter(new FileOutputStream(tmpFile));
|
||||||
|
XMLWriter outXml = new XMLWriter(out);
|
||||||
|
LoadVascXmlWriter writer = new LoadVascXmlWriter(outXml,vc);
|
||||||
|
writer.writeXml(model);
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2009-2012 forwardfire.net All rights reserved.
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
* that the following conditions are met:
|
* that the following conditions are met:
|
||||||
|
@ -20,30 +20,24 @@
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.tech.ejb3.menu.model;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Comparator;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* VascMenuGroupComparator orders the menu group.
|
* LoadStep are the load wizzard steps.
|
||||||
*
|
*
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 nov 17, 2012
|
* @version 1.0 Nov 21, 2012
|
||||||
*/
|
*/
|
||||||
public class VascMenuGroupComparator implements Serializable,Comparator<VascMenuGroup> {
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
public interface LoadStep {
|
||||||
|
|
||||||
|
JPanel getPanel();
|
||||||
|
|
||||||
private static final long serialVersionUID = 386631856823832371L;
|
String getStepTitle();
|
||||||
|
|
||||||
public int compare(VascMenuGroup m1, VascMenuGroup m2) {
|
void setupStep(LoadStepData model);
|
||||||
if (m1.getMenuOrder()==null) {
|
|
||||||
return 1;
|
boolean performStep(LoadStepData model);
|
||||||
}
|
}
|
||||||
if (m2.getMenuOrder()==null) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return m1.getMenuOrder().compareTo(m2.getMenuOrder());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eobjects.metamodel.DataContext;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LoadStepData Simple model to load wizzard steps.
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nov 21, 2012
|
||||||
|
*/
|
||||||
|
public class LoadStepData {
|
||||||
|
|
||||||
|
public String name = null;
|
||||||
|
public MetaModelDataContextProvider dcProvider = null;
|
||||||
|
public DataContext dc = null;
|
||||||
|
|
||||||
|
public String filename = null;
|
||||||
|
public String groupId = null;
|
||||||
|
public String rolesGroup = null;
|
||||||
|
public String rolesEntry = null;
|
||||||
|
public List<String> tables = new ArrayList<String>();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,242 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.forwardfire.vasc.demo.server.ui.load;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextJdbc;
|
||||||
|
import net.forwardfire.vasc.backend.metamodel.MetaModelDataContextMongodb;
|
||||||
|
import net.forwardfire.vasc.backend.metamodel.MetaModelSchemaAutoEntry;
|
||||||
|
import net.forwardfire.vasc.backend.metamodel.MetaModelVascBackend;
|
||||||
|
import net.forwardfire.vasc.core.VascController;
|
||||||
|
import net.forwardfire.vasc.core.VascEntry;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryField;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryFieldType;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryLink;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryLinkType;
|
||||||
|
import net.forwardfire.vasc.impl.ui.VascSelectItemModelEntry;
|
||||||
|
|
||||||
|
import org.xml.sax.SAXException;
|
||||||
|
import org.xml.sax.ext.DefaultHandler2;
|
||||||
|
import org.xml.sax.helpers.AttributesImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LoadVascXmlWriter writes the xml tags.
|
||||||
|
* note: need to move this to x4o
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nov 22, 2012
|
||||||
|
*/
|
||||||
|
public class LoadVascXmlWriter {
|
||||||
|
|
||||||
|
private VascController vc = null;
|
||||||
|
private DefaultHandler2 xmlWriter = null;
|
||||||
|
|
||||||
|
static private final String URI_VASC_ROOT = "http://vasc.forwardfire.net/xml/ns/vasc-root";
|
||||||
|
static private final String URI_VASC_LANG = "http://vasc.forwardfire.net/xml/ns/vasc-lang";
|
||||||
|
static private final String URI_META_MODEL = "http://vasc.forwardfire.net/xml/ns/vasc-backend-metamodel";
|
||||||
|
static private final String URI_VASC_DEMO = "http://vasc.forwardfire.net/xml/ns/vasc-tech-demo";
|
||||||
|
|
||||||
|
public LoadVascXmlWriter(DefaultHandler2 xmlWriter,VascController vc) {
|
||||||
|
this.xmlWriter=xmlWriter;
|
||||||
|
this.vc=vc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeXml(LoadStepData model) throws SAXException {
|
||||||
|
|
||||||
|
MetaModelSchemaAutoEntry autoEntry = new MetaModelSchemaAutoEntry();
|
||||||
|
autoEntry.setVascGroupId(model.groupId);
|
||||||
|
autoEntry.setEntryPrefix(model.name);
|
||||||
|
autoEntry.setDataContextProvider(model.dcProvider);
|
||||||
|
autoEntry.getTables().addAll(model.tables);
|
||||||
|
|
||||||
|
autoEntry.autoFillResult(vc);
|
||||||
|
|
||||||
|
xmlWriter.startDocument();
|
||||||
|
|
||||||
|
char[] msg;
|
||||||
|
msg = "\n".toCharArray();
|
||||||
|
xmlWriter.ignorableWhitespace(msg,0,msg.length);
|
||||||
|
|
||||||
|
xmlWriter.startPrefixMapping("vasc", URI_VASC_ROOT);
|
||||||
|
xmlWriter.startPrefixMapping("v", URI_VASC_LANG);
|
||||||
|
xmlWriter.startPrefixMapping("mm", URI_META_MODEL);
|
||||||
|
xmlWriter.startPrefixMapping("td", URI_VASC_DEMO);
|
||||||
|
|
||||||
|
AttributesImpl atts = new AttributesImpl();
|
||||||
|
xmlWriter.startElement (URI_VASC_ROOT, "root", "", atts);
|
||||||
|
|
||||||
|
msg = "Auto generated vasc xml example.".toCharArray();
|
||||||
|
xmlWriter.comment(msg,0,msg.length);
|
||||||
|
|
||||||
|
writeGroup(model.groupId,model.rolesGroup);
|
||||||
|
writeMetaProvider(model);
|
||||||
|
|
||||||
|
for (MetaModelVascBackend vb:autoEntry.getResultBackends()) {
|
||||||
|
writeEntryBackend(vb,model);
|
||||||
|
}
|
||||||
|
for (VascEntry ve:autoEntry.getResultEntries()) {
|
||||||
|
writeEntry(ve,model);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
xmlWriter.endElement(URI_VASC_ROOT, "root", "");
|
||||||
|
xmlWriter.endDocument();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeMetaProvider(LoadStepData model) throws SAXException {
|
||||||
|
AttributesImpl atts = null;
|
||||||
|
if (model.dcProvider instanceof MetaModelDataContextMongodb) {
|
||||||
|
MetaModelDataContextMongodb mongo = (MetaModelDataContextMongodb)model.dcProvider;
|
||||||
|
|
||||||
|
atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "el.id", "", "", model.name+"DC");
|
||||||
|
if (mongo.getHostname()!=null) {
|
||||||
|
atts.addAttribute ("", "hostname", "", "", mongo.getHostname());
|
||||||
|
}
|
||||||
|
if (mongo.getDatabase()!=null) {
|
||||||
|
atts.addAttribute ("", "database", "", "", mongo.getDatabase());
|
||||||
|
}
|
||||||
|
if (mongo.getUsername()!=null) {
|
||||||
|
atts.addAttribute ("", "username", "", "", mongo.getUsername());
|
||||||
|
}
|
||||||
|
if (mongo.getPassword()!=null) {
|
||||||
|
atts.addAttribute ("", "password", "", "", mongo.getPassword());
|
||||||
|
}
|
||||||
|
atts.addAttribute ("", "port", "", "", ""+mongo.getPort());
|
||||||
|
|
||||||
|
xmlWriter.startElement (URI_META_MODEL, "mongodbDataContext", "", atts);
|
||||||
|
xmlWriter.endElement(URI_META_MODEL, "mongodbDataContext", "");
|
||||||
|
|
||||||
|
} else if (model.dcProvider instanceof MetaModelDataContextJdbc) {
|
||||||
|
MetaModelDataContextJdbc jdbc = (MetaModelDataContextJdbc)model.dcProvider;
|
||||||
|
|
||||||
|
atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "name", "", "", "jdbc/load/"+model.name+"DS");
|
||||||
|
atts.addAttribute ("", "auth", "", "", "Container");
|
||||||
|
atts.addAttribute ("", "type", "", "", "javax.sql.DataSource");
|
||||||
|
atts.addAttribute ("", "factory", "", "", "org.apache.tomcat.jdbc.pool.DataSourceFactory");
|
||||||
|
atts.addAttribute ("", "initialSize", "", "", "1");
|
||||||
|
atts.addAttribute ("", "minIdle", "", "", "1");
|
||||||
|
atts.addAttribute ("", "username", "", "", jdbc.getUsername());
|
||||||
|
atts.addAttribute ("", "password", "", "", jdbc.getPassword());
|
||||||
|
atts.addAttribute ("", "driverClassName", "", "", jdbc.getDriverClass());
|
||||||
|
atts.addAttribute ("", "url", "", "", jdbc.getConnectUrl());
|
||||||
|
xmlWriter.startElement (URI_VASC_DEMO, "tomcatResource", "", atts);
|
||||||
|
xmlWriter.endElement(URI_VASC_DEMO, "tomcatResource", "");
|
||||||
|
|
||||||
|
atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "el.id", "", "", model.name+"DC");
|
||||||
|
atts.addAttribute ("", "jndiName", "", "", "java:jdbc/load/"+model.name+"DS");
|
||||||
|
xmlWriter.startElement (URI_META_MODEL, "jndiDataSourceDataContext", "", atts);
|
||||||
|
xmlWriter.endElement(URI_META_MODEL, "jndiDataSourceDataContext", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeGroup(String groupId,String roles) throws SAXException {
|
||||||
|
AttributesImpl atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "id", "", "", groupId);
|
||||||
|
atts.addAttribute ("", "rolesView", "", "", roles);
|
||||||
|
xmlWriter.startElement (URI_VASC_LANG, "entryGroup", "", atts);
|
||||||
|
xmlWriter.endElement(URI_VASC_LANG, "entryGroup", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeEntryBackend(MetaModelVascBackend vb,LoadStepData model) throws SAXException {
|
||||||
|
|
||||||
|
AttributesImpl atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "id", "", "", vb.getId());
|
||||||
|
atts.addAttribute ("", "dataContextProvider", "", "", "${"+model.name+ "DC}");
|
||||||
|
atts.addAttribute ("", "table", "", "", vb.getTable());
|
||||||
|
atts.addAttribute ("", "tableId", "", "", vb.getTableId());
|
||||||
|
|
||||||
|
xmlWriter.startElement (URI_META_MODEL, "metaModelBackend", "", atts);
|
||||||
|
xmlWriter.endElement(URI_META_MODEL, "metaModelBackend", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeEntry(VascEntry ve,LoadStepData model) throws SAXException {
|
||||||
|
|
||||||
|
AttributesImpl atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "id", "", "", ve.getId());
|
||||||
|
atts.addAttribute ("", "backendId", "", "", ve.getBackendId());
|
||||||
|
atts.addAttribute ("", "primaryKeyFieldId", "", "", ve.getPrimaryKeyFieldId());
|
||||||
|
if (ve.getDisplayNameFieldId()!=null) {
|
||||||
|
atts.addAttribute ("", "displayNameFieldId", "", "", ve.getDisplayNameFieldId());
|
||||||
|
}
|
||||||
|
if (ve.getVascGroupId()!=null) {
|
||||||
|
atts.addAttribute ("", "vascGroupId", "", "", ve.getVascGroupId());
|
||||||
|
}
|
||||||
|
if (ve.getAccessType()!=null) {
|
||||||
|
atts.addAttribute ("", "accessType", "", "", ve.getAccessType().name());
|
||||||
|
}
|
||||||
|
xmlWriter.startElement (URI_VASC_LANG, "entry", "", atts);
|
||||||
|
createFields(ve);
|
||||||
|
|
||||||
|
for (VascEntryLink vel:ve.getVascEntryLinks()) {
|
||||||
|
atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "id", "", "", vel.getId());
|
||||||
|
if (vel.getVascEntryLinkType()!=null && vel.getVascEntryLinkType()!=VascEntryLinkType.DEFAULT_TYPE) {
|
||||||
|
atts.addAttribute ("", "vascEntryLinkType", "", "", ""+vel.getVascEntryLinkType());
|
||||||
|
}
|
||||||
|
atts.addAttribute ("", "vascEntryId", "", "", vel.getVascEntryId());
|
||||||
|
xmlWriter.startElement (URI_VASC_LANG, "link", "", atts);
|
||||||
|
|
||||||
|
for (String key:vel.getEntryParameterFieldIdKeys()) {
|
||||||
|
String value = vel.getEntryParameterFieldId(key);
|
||||||
|
atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "name", "", "", key);
|
||||||
|
atts.addAttribute ("", "valueFieldId", "", "", value);
|
||||||
|
xmlWriter.startElement (URI_VASC_LANG, "linkParameter", "", atts);
|
||||||
|
xmlWriter.endElement(URI_VASC_LANG, "linkParameter", "");
|
||||||
|
}
|
||||||
|
xmlWriter.endElement(URI_VASC_LANG, "link", "");
|
||||||
|
}
|
||||||
|
xmlWriter.endElement(URI_VASC_LANG, "entry", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createFields(VascEntry ve) throws SAXException {
|
||||||
|
for (VascEntryField f:ve.getVascEntryFields()) {
|
||||||
|
|
||||||
|
AttributesImpl atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "id", "", "", f.getId());
|
||||||
|
VascEntryFieldType type = f.getVascEntryFieldType();
|
||||||
|
if (type!=null) {
|
||||||
|
atts.addAttribute ("", "vascEntryFieldType", "", "", type.getId());
|
||||||
|
}
|
||||||
|
if (f.getEditReadOnly()!=null) {
|
||||||
|
atts.addAttribute ("", "editReadOnly", "", "", ""+f.getEditReadOnly());
|
||||||
|
}
|
||||||
|
//atts.addAttribute ("", "vascGroupId", "", "", model.groupId);
|
||||||
|
xmlWriter.startElement (URI_VASC_LANG, "field", "", atts);
|
||||||
|
|
||||||
|
if (type!=null && "ListField".equals(type.getId())) {
|
||||||
|
VascSelectItemModelEntry link = (VascSelectItemModelEntry)type.getDataObject();
|
||||||
|
atts = new AttributesImpl();
|
||||||
|
atts.addAttribute ("", "entryId", "", "", ""+link.getEntryId());
|
||||||
|
atts.addAttribute ("", "displayFieldId", "", "", ""+link.getDisplayFieldId());
|
||||||
|
xmlWriter.startElement (URI_VASC_LANG, "vascSelectItemModel", "", atts);
|
||||||
|
xmlWriter.endElement(URI_VASC_LANG, "vascSelectItemModel", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
xmlWriter.endElement(URI_VASC_LANG, "field", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -63,27 +63,6 @@ CREATE INDEX vasc_page_part_page_id_idx ON vasc_page_part(page_id);
|
||||||
CREATE INDEX vasc_page_part_active_idx ON vasc_page_part(active);
|
CREATE INDEX vasc_page_part_active_idx ON vasc_page_part(active);
|
||||||
CREATE INDEX vasc_page_part_sitemap_idx ON vasc_page_part(sitemap);
|
CREATE INDEX vasc_page_part_sitemap_idx ON vasc_page_part(sitemap);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE vasc_menu_group (
|
|
||||||
id varchar not null primary key,
|
|
||||||
title varchar not null,
|
|
||||||
active BOOLEAN NOT NULL,
|
|
||||||
roles varchar not null,
|
|
||||||
menu_order integer not null,
|
|
||||||
);
|
|
||||||
CREATE INDEX vasc_menu_group_active_idx ON vasc_menu_group(active);
|
|
||||||
|
|
||||||
CREATE TABLE vasc_menu (
|
|
||||||
id IDENTITY not null primary key,
|
|
||||||
vasc_entry_id varchar not null,
|
|
||||||
title varchar not null,
|
|
||||||
active BOOLEAN NOT NULL,
|
|
||||||
roles varchar not null,
|
|
||||||
menu_order integer not null,
|
|
||||||
menu_group varchar not null
|
|
||||||
);
|
|
||||||
CREATE INDEX vasc_menu_active_idx ON vasc_menu(active);
|
|
||||||
|
|
||||||
CREATE TABLE vasc_menu_web (
|
CREATE TABLE vasc_menu_web (
|
||||||
id IDENTITY not null primary key,
|
id IDENTITY not null primary key,
|
||||||
href varchar not null,
|
href varchar not null,
|
||||||
|
@ -135,22 +114,6 @@ INSERT INTO vasc_page_part VALUES(10,6, 'metamodel','', TRUE,TRUE,TRUE,3,'WIKI',
|
||||||
|
|
||||||
-- INSERT INTO vasc_page VALUES(1, 'home','home','Welcome to the vasc demo, please login as admin to view all stuff.');
|
-- INSERT INTO vasc_page VALUES(1, 'home','home','Welcome to the vasc demo, please login as admin to view all stuff.');
|
||||||
|
|
||||||
INSERT INTO vasc_menu_group VALUES('demo', 'Demo',true,'',1);
|
|
||||||
INSERT INTO vasc_menu_group VALUES('meta', 'Meta',true,'',2);
|
|
||||||
|
|
||||||
INSERT INTO vasc_menu VALUES(1,'metaPeople', 'People', true,'',1,'meta');
|
|
||||||
INSERT INTO vasc_menu VALUES(2,'metaProjects', 'Projects',true,'',2,'meta');
|
|
||||||
|
|
||||||
INSERT INTO vasc_menu VALUES(3,'AdminVascUser', 'Users', true,'',1,'demo');
|
|
||||||
INSERT INTO vasc_menu VALUES(4,'AdminVascUserRole', 'UserRole',true,'',2,'demo');
|
|
||||||
INSERT INTO vasc_menu VALUES(5,'AdminVascUserChangeField','ChangeField', true,'',3,'demo');
|
|
||||||
INSERT INTO vasc_menu VALUES(6,'AdminVascUserChangeLog', 'ChangeLog',true,'',4,'demo');
|
|
||||||
INSERT INTO vasc_menu VALUES(7,'AdminVascPage', 'Pages', true,'',5,'demo');
|
|
||||||
INSERT INTO vasc_menu VALUES(8,'AdminVascPagePart', 'PagesPart',true,'',6,'demo');
|
|
||||||
INSERT INTO vasc_menu VALUES( 9,'AdminVascMenuWeb', 'MenuWeb', true,'',7,'demo');
|
|
||||||
INSERT INTO vasc_menu VALUES(10,'AdminVascMenuGroup', 'MenuGroup',true,'',8,'demo');
|
|
||||||
INSERT INTO vasc_menu VALUES(11,'AdminVascMenu', 'Menu', true,'',9,'demo');
|
|
||||||
|
|
||||||
INSERT INTO vasc_menu_web VALUES(1, '/html/index.jsf','Home', '',true,'',1,'BAR_RIGHT');
|
INSERT INTO vasc_menu_web VALUES(1, '/html/index.jsf','Home', '',true,'',1,'BAR_RIGHT');
|
||||||
INSERT INTO vasc_menu_web VALUES(2, '/html/admin/debug.jsf','Debug','',true,'admin',2,'BAR_RIGHT');
|
INSERT INTO vasc_menu_web VALUES(2, '/html/admin/debug.jsf','Debug','',true,'admin',2,'BAR_RIGHT');
|
||||||
INSERT INTO vasc_menu_web VALUES(3, '/html/admin/index.jsf','Admin','',true,'admin',3,'BAR_RIGHT');
|
INSERT INTO vasc_menu_web VALUES(3, '/html/admin/index.jsf','Admin','',true,'admin',3,'BAR_RIGHT');
|
||||||
|
|
|
@ -29,7 +29,7 @@ Application.homepage = http://vasc.forwardfire.org/
|
||||||
Application.vendorId = vasc
|
Application.vendorId = vasc
|
||||||
Application.id = vascdemotech
|
Application.id = vascdemotech
|
||||||
Application.lookAndFeel = com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
|
Application.lookAndFeel = com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
|
||||||
#Application.icon = images/icon.png
|
Application.icon = icon.png
|
||||||
|
|
||||||
Application.web.meta.robots = index, follow
|
Application.web.meta.robots = index, follow
|
||||||
Application.web.meta.description = Vasc Tech Demo Web Frontends
|
Application.web.meta.description = Vasc Tech Demo Web Frontends
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 264 B |
|
@ -0,0 +1,12 @@
|
||||||
|
#
|
||||||
|
# Default dark red color thema for pulsefire
|
||||||
|
#
|
||||||
|
text=#DF0A0A
|
||||||
|
info=#370A00
|
||||||
|
control=#0A1428
|
||||||
|
nimbusBase=#00050A
|
||||||
|
nimbusFocus=#0A6428
|
||||||
|
nimbusOrange=#00960A
|
||||||
|
nimbusBorder=#34415E
|
||||||
|
nimbusDisabledText=#850F0F
|
||||||
|
nimbusLightBackground=#050A28
|
Binary file not shown.
Before Width: | Height: | Size: 644 B After Width: | Height: | Size: 400 B |
|
@ -28,6 +28,11 @@
|
||||||
<artifactId>vasc-core-ejb3-client</artifactId>
|
<artifactId>vasc-core-ejb3-client</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.forwardfire.vasc.lib</groupId>
|
||||||
|
<artifactId>vasc-lib-i18n</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.forwardfire.vasc.demo</groupId>
|
<groupId>net.forwardfire.vasc.demo</groupId>
|
||||||
<artifactId>vasc-demo-tech-web</artifactId>
|
<artifactId>vasc-demo-tech-web</artifactId>
|
||||||
|
|
|
@ -27,27 +27,10 @@ import java.awt.Dimension;
|
||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.ObjectOutputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.ResourceBundle;
|
|
||||||
|
|
||||||
import javax.naming.Context;
|
|
||||||
import javax.naming.InitialContext;
|
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
import javax.swing.JMenu;
|
|
||||||
import javax.swing.JMenuItem;
|
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JSplitPane;
|
import javax.swing.JSplitPane;
|
||||||
|
@ -60,32 +43,22 @@ import javax.swing.tree.DefaultMutableTreeNode;
|
||||||
import javax.swing.tree.DefaultTreeModel;
|
import javax.swing.tree.DefaultTreeModel;
|
||||||
import javax.swing.tree.TreeNode;
|
import javax.swing.tree.TreeNode;
|
||||||
|
|
||||||
import net.forwardfire.vasc.annotations.VascModelReference;
|
|
||||||
import net.forwardfire.vasc.backend.VascBackend;
|
import net.forwardfire.vasc.backend.VascBackend;
|
||||||
import net.forwardfire.vasc.backend.VascBackendController;
|
|
||||||
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
||||||
import net.forwardfire.vasc.backend.VascBackendState;
|
|
||||||
import net.forwardfire.vasc.backend.proxy.VascBackendProxyEventExecutor;
|
|
||||||
import net.forwardfire.vasc.core.VascController;
|
import net.forwardfire.vasc.core.VascController;
|
||||||
import net.forwardfire.vasc.core.VascControllerLocal;
|
import net.forwardfire.vasc.core.VascEntryConfigControllerLocal;
|
||||||
import net.forwardfire.vasc.core.VascControllerProvider;
|
|
||||||
import net.forwardfire.vasc.core.VascEntry;
|
|
||||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||||
import net.forwardfire.vasc.core.VascEntryField;
|
|
||||||
import net.forwardfire.vasc.core.VascEntryFieldLocal;
|
|
||||||
import net.forwardfire.vasc.core.VascEntryLocal;
|
import net.forwardfire.vasc.core.VascEntryLocal;
|
||||||
import net.forwardfire.vasc.core.VascException;
|
import net.forwardfire.vasc.core.VascException;
|
||||||
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
|
|
||||||
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
|
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.VascMenuController;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.VascMenuController;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenu;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenu;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuGroup;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuGroup;
|
||||||
import net.forwardfire.vasc.ejb3.VascServiceManager;
|
import net.forwardfire.vasc.ejb3.VascServiceManager;
|
||||||
|
import net.forwardfire.vasc.ejb3.VascServiceRemoteBackend;
|
||||||
import net.forwardfire.vasc.frontend.swing.SwingPanelIntegration;
|
import net.forwardfire.vasc.frontend.swing.SwingPanelIntegration;
|
||||||
import net.forwardfire.vasc.frontend.swing.SwingPanelTabbed;
|
import net.forwardfire.vasc.frontend.swing.SwingPanelTabbed;
|
||||||
import net.forwardfire.vasc.impl.DefaultVascController;
|
|
||||||
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
||||||
import net.forwardfire.vasc.impl.entry.SetParameterBackendListener;
|
import net.forwardfire.vasc.lib.i18n.bundle.RootApplicationBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JMainPanel is the main panel/window of this demo.
|
* JMainPanel is the main panel/window of this demo.
|
||||||
|
@ -96,199 +69,23 @@ import net.forwardfire.vasc.impl.entry.SetParameterBackendListener;
|
||||||
public class JMainPanel extends JPanel {
|
public class JMainPanel extends JPanel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 5834715323973411147L;
|
private static final long serialVersionUID = 5834715323973411147L;
|
||||||
//private VascControllerService vascManager = null;
|
|
||||||
private VascController vc = null;
|
private VascController vc = null;
|
||||||
private VascMenuController vmc = null;
|
private VascMenuController vmc = null;
|
||||||
private VascServiceManager vsm = null;
|
private VascServiceManager vsm = null;
|
||||||
private SwingPanelIntegration spi = null;
|
private SwingPanelIntegration spi = null;
|
||||||
private JTabbedPane tabPane = null;
|
private JTabbedPane tabPane = null;
|
||||||
private JTree vascTree = null;
|
private JTree vascTree = null;
|
||||||
private JSplitPane bottomSplitPane = null;
|
|
||||||
private JSplitPane treeSplitPane = null;
|
private JSplitPane treeSplitPane = null;
|
||||||
|
|
||||||
|
|
||||||
public JMainPanel(VascServiceManager vsm,VascMenuController vmc) {
|
public JMainPanel(VascServiceManager vsm,VascMenuController vmc) {
|
||||||
//this.vascManager=VascTechDemoStartup.getInstance().getVascControllerService();
|
|
||||||
this.vsm = vsm;
|
this.vsm = vsm;
|
||||||
this.vmc = vmc;
|
this.vmc = vmc;
|
||||||
setLayout(new BorderLayout());
|
setLayout(new BorderLayout());
|
||||||
add(createBottomSplit(), BorderLayout.CENTER);
|
add(createTreeSplit(), BorderLayout.CENTER);
|
||||||
|
|
||||||
vc = createVascController(vsm);
|
|
||||||
|
|
||||||
//vascManager.addVascServiceListener(this);
|
|
||||||
rebuildTree();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class RemoteVascBackend implements VascBackend {
|
|
||||||
|
|
||||||
private String backendId = null;
|
|
||||||
private VascServiceManager vascManager = null;
|
|
||||||
|
|
||||||
public RemoteVascBackend(String backendId,VascServiceManager vascManager) {
|
vc = createVascController(vsm);
|
||||||
this.backendId=backendId;
|
rebuildTree();
|
||||||
this.vascManager=vascManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void startBackend() {
|
|
||||||
}
|
|
||||||
public void stopBackend() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(Object object) throws VascException {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=object;
|
|
||||||
vascManager.invokeBackendMethod(backendId, "delete", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascException {
|
|
||||||
Object[] args = new Object[2];
|
|
||||||
args[0]=state;
|
|
||||||
args[1]=primaryId;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "doRecordMoveDownById", args);
|
|
||||||
return (Long)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascException {
|
|
||||||
Object[] args = new Object[2];
|
|
||||||
args[0]=state;
|
|
||||||
args[1]=primaryId;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "doRecordMoveUpById", args);
|
|
||||||
return (Long)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public List<Object> execute(VascBackendState state) throws VascException {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=state;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "execute", args);
|
|
||||||
return (List<Object>)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long fetchTotalExecuteSize(VascBackendState state) {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=state;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "fetchTotalExecuteSize", args);
|
|
||||||
return (Long)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return backendId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPageable() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isPageable", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isRecordMoveable() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isRecordMoveable", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSearchable() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isSearchable", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSortable() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isSortable", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object merge(Object object) throws VascException {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=object;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "merge", args);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void persist(Object object) throws VascException {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=object;
|
|
||||||
vascManager.invokeBackendMethod(backendId, "delete", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public VascEntryFieldValue provideVascEntryFieldValue(VascEntryField field) {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
|
||||||
field = ((VascEntryFieldLocal)field).clone(); // RM...
|
|
||||||
|
|
||||||
ByteArrayOutputStream dataArray = new ByteArrayOutputStream(256); // it grows when needed
|
|
||||||
ObjectOutputStream objOutstream = new ObjectOutputStream(dataArray);
|
|
||||||
objOutstream.writeObject(field);
|
|
||||||
objOutstream.close();
|
|
||||||
int objectSize = dataArray.size();
|
|
||||||
System.out.println("Writing obj to field: "+objectSize);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=field;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "provideVascEntryFieldValue", args);
|
|
||||||
return (VascEntryFieldValue)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public VascEntryRecordCreator provideVascEntryRecordCreator(VascEntry vascEntry) {
|
|
||||||
VascEntryLocal clone = null;
|
|
||||||
try {
|
|
||||||
clone = ((VascEntryLocal)vascEntry).clone();
|
|
||||||
clone.setVascFrontendController(null);
|
|
||||||
clone.setVascEntryFieldEventChannel(null);
|
|
||||||
} catch (CloneNotSupportedException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
ByteArrayOutputStream dataArray = new ByteArrayOutputStream(256); // it grows when needed
|
|
||||||
ObjectOutputStream objOutstream = new ObjectOutputStream(dataArray);
|
|
||||||
objOutstream.writeObject(clone);
|
|
||||||
objOutstream.close();
|
|
||||||
//int objectSize = dataArray.size();
|
|
||||||
//System.out.println("Writing obj to entry: "+objectSize);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=clone;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "provideVascEntryRecordCreator", args);
|
|
||||||
return (VascEntryRecordCreator)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
// we cant change id
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Object> executePageSummary() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Object> executeTotalSummary() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPageSummary() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isPageSummary", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isTotalSummary() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isTotalSummary", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isReadOnly() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -301,7 +98,8 @@ public class JMainPanel extends JPanel {
|
||||||
|
|
||||||
// get local jvm plugging controller
|
// get local jvm plugging controller
|
||||||
VascController c = DefaultVascFactory.getDefaultVascController();
|
VascController c = DefaultVascFactory.getDefaultVascController();
|
||||||
|
|
||||||
|
((VascEntryConfigControllerLocal)c.getVascEntryConfigController()).setResourceBundle(RootApplicationBundle.class.getName());
|
||||||
/*
|
/*
|
||||||
DefaultVascEntryController con = new DefaultVascEntryController() {
|
DefaultVascEntryController con = new DefaultVascEntryController() {
|
||||||
public VascEntry getVascEntryById(String id) {
|
public VascEntry getVascEntryById(String id) {
|
||||||
|
@ -323,7 +121,7 @@ public class JMainPanel extends JPanel {
|
||||||
for (String id:entryIds) {
|
for (String id:entryIds) {
|
||||||
VascEntryLocal ve = (VascEntryLocal)vascManager.getVascEntry(id);
|
VascEntryLocal ve = (VascEntryLocal)vascManager.getVascEntry(id);
|
||||||
String backendId = ve.getBackendId();
|
String backendId = ve.getBackendId();
|
||||||
VascBackend vb = new RemoteVascBackend(backendId,vascManager);
|
VascBackend vb = new VascServiceRemoteBackend(vascManager,backendId);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
for (String key:ve.getEntryParameterKeys()) {
|
for (String key:ve.getEntryParameterKeys()) {
|
||||||
|
@ -360,32 +158,18 @@ public class JMainPanel extends JPanel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private JSplitPane createBottomSplit() {
|
|
||||||
JSplitPane sp0 = createTreeSplit();
|
|
||||||
JPanel sp1 = new JPanel();//JConsolePanel();
|
|
||||||
bottomSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,sp0,sp1);
|
|
||||||
bottomSplitPane.setOneTouchExpandable(true);
|
|
||||||
bottomSplitPane.setResizeWeight(0.2);
|
|
||||||
bottomSplitPane.setDividerLocation(700);
|
|
||||||
sp0.setMinimumSize(new Dimension(400, 400));
|
|
||||||
sp1.setMinimumSize(new Dimension(400, 150));
|
|
||||||
return bottomSplitPane;
|
|
||||||
}
|
|
||||||
|
|
||||||
private JSplitPane createTreeSplit() {
|
private JSplitPane createTreeSplit() {
|
||||||
JScrollPane sp0 = createTreePane();
|
JScrollPane sp0 = createTreePane();
|
||||||
JScrollPane sp1 = createContentPane();
|
JScrollPane sp1 = createContentPane();
|
||||||
treeSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,sp0,sp1);
|
treeSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,sp0,sp1);
|
||||||
treeSplitPane.setOneTouchExpandable(true);
|
treeSplitPane.setOneTouchExpandable(true);
|
||||||
treeSplitPane.setResizeWeight(0.7);
|
treeSplitPane.setResizeWeight(0.2);
|
||||||
treeSplitPane.setDividerLocation(200);
|
treeSplitPane.setDividerLocation(170);
|
||||||
sp0.setMinimumSize(new Dimension(200, 400));
|
sp0.setMinimumSize(new Dimension(200, 400));
|
||||||
sp1.setMinimumSize(new Dimension(400, 400));
|
sp1.setMinimumSize(new Dimension(400, 400));
|
||||||
return treeSplitPane;
|
return treeSplitPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VascTreeModel extends DefaultTreeModel {
|
class VascTreeModel extends DefaultTreeModel {
|
||||||
public VascTreeModel(TreeNode root) {
|
public VascTreeModel(TreeNode root) {
|
||||||
super(root);
|
super(root);
|
||||||
|
@ -450,9 +234,9 @@ public class JMainPanel extends JPanel {
|
||||||
JScrollPane p = createJScrollPane(contentPane);
|
JScrollPane p = createJScrollPane(contentPane);
|
||||||
|
|
||||||
tabPane = new JTabbedPane();
|
tabPane = new JTabbedPane();
|
||||||
spi = new SwingPanelTabbed(tabPane);
|
spi = new SwingPanelTabbed(tabPane);
|
||||||
contentPane.add(tabPane);
|
contentPane.add(tabPane);
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -500,9 +284,9 @@ public class JMainPanel extends JPanel {
|
||||||
List<VascMenuGroup> groups = vmc.getFilteredMenuGroup();
|
List<VascMenuGroup> groups = vmc.getFilteredMenuGroup();
|
||||||
for (VascMenuGroup group:groups) {
|
for (VascMenuGroup group:groups) {
|
||||||
|
|
||||||
DefaultMutableTreeNode groupNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.GROUP,group.getTitle()));
|
DefaultMutableTreeNode groupNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.GROUP,VascDemoSwingClient.getInstance().i18n(group.getTitleKey())));
|
||||||
for (VascMenu vm:group.getMenus()) {
|
for (VascMenu vm:group.getMenus()) {
|
||||||
DefaultMutableTreeNode entryNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY,vm.getVascEntryId()));
|
DefaultMutableTreeNode entryNode = new DefaultMutableTreeNode(new VascTreeNode(VascTreeNodeType.ENTRY,VascDemoSwingClient.getInstance().i18n(vm.getTitleKey())));
|
||||||
groupNode.add(entryNode);
|
groupNode.add(entryNode);
|
||||||
}
|
}
|
||||||
root.add(groupNode);
|
root.add(groupNode);
|
||||||
|
|
|
@ -24,22 +24,14 @@ package net.forwardfire.vasc.demo.client.swing;
|
||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.io.File;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.swing.JFileChooser;
|
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
import javax.swing.JMenuBar;
|
import javax.swing.JMenuBar;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.JTabbedPane;
|
import javax.swing.JTabbedPane;
|
||||||
|
|
||||||
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
|
||||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
|
||||||
import net.forwardfire.vasc.core.VascException;
|
import net.forwardfire.vasc.core.VascException;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.VascMenuController;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.VascMenuController;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenu;
|
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuGroup;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JMainPanelMenuBar Adds all menu bar items.
|
* JMainPanelMenuBar Adds all menu bar items.
|
||||||
|
@ -50,85 +42,73 @@ import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuGroup;
|
||||||
public class JMainPanelMenuBar extends JMenuBar implements ActionListener {
|
public class JMainPanelMenuBar extends JMenuBar implements ActionListener {
|
||||||
|
|
||||||
private static final long serialVersionUID = -2828428804621352725L;
|
private static final long serialVersionUID = -2828428804621352725L;
|
||||||
private VascMenuController vmc = null;
|
|
||||||
private JMainPanel mainPanel = null;
|
private JMainPanel mainPanel = null;
|
||||||
private List<JMenu> vascMenus = null;
|
//private List<JMenu> vascMenus = null;
|
||||||
private JMenu clientFileMenu = null;
|
private JMenu clientFileMenu = null;
|
||||||
private JMenu clientTabMenu = null;
|
private JMenu clientTabMenu = null;
|
||||||
|
|
||||||
public JMainPanelMenuBar(VascMenuController vmc,JMainPanel mainPanel) {
|
public JMainPanelMenuBar(VascMenuController vmc,JMainPanel mainPanel) {
|
||||||
this.vmc=vmc;
|
|
||||||
this.mainPanel=mainPanel;
|
this.mainPanel=mainPanel;
|
||||||
|
|
||||||
clientFileMenu = new JMenu("File");
|
clientFileMenu = new JMenu("File");
|
||||||
add(clientFileMenu);
|
add(clientFileMenu);
|
||||||
|
|
||||||
JMenuItem logoutItem = new JMenuItem("Logout");
|
JMenuItem logoutItem = new JMenuItem("Logout");
|
||||||
logoutItem.addActionListener(new ActionListener() {
|
logoutItem.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
try {
|
try {
|
||||||
/*
|
VascDemoSwingClient.getInstance().logout();
|
||||||
final JFileChooser fc = new JFileChooser();
|
|
||||||
//fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
|
||||||
int returnVal = fc.showOpenDialog((JMenuItem)e.getSource());
|
|
||||||
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
|
||||||
File file = fc.getSelectedFile();
|
|
||||||
//VascTechDemoStartup.getInstance().getVascControllerService().openFile(file);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
} catch (Exception e1) {
|
} catch (Exception e1) {
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
});
|
clientFileMenu.add(logoutItem);
|
||||||
clientFileMenu.add(logoutItem);
|
clientFileMenu.addSeparator();
|
||||||
clientFileMenu.addSeparator();
|
JMenuItem exitItem = new JMenuItem("Exit");
|
||||||
JMenuItem exitItem = new JMenuItem("Exit");
|
exitItem.addActionListener(new ActionListener() {
|
||||||
exitItem.addActionListener(new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
VascDemoSwingClient.getInstance().exit();
|
VascDemoSwingClient.getInstance().exit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
clientFileMenu.add(exitItem);
|
clientFileMenu.add(exitItem);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
List<VascMenuGroup> groups = vmc.getFilteredMenuGroup();
|
List<VascMenuGroup> groups = vmc.getFilteredMenuGroup();
|
||||||
for (VascMenuGroup group:groups) {
|
for (VascMenuGroup group:groups) {
|
||||||
JMenu menu = new JMenu(group.getTitle());
|
JMenu menu = new JMenu(group.getTitleKey());
|
||||||
for (VascMenu vm:group.getMenus()) {
|
for (VascMenu vm:group.getMenus()) {
|
||||||
JMenuItem item = new JMenuItem(vm.getTitle());
|
JMenuItem item = new JMenuItem(vm.getTitleKey());
|
||||||
item.putClientProperty("vascEntryId", vm.getVascEntryId());
|
item.putClientProperty("vascEntryId", vm.getVascEntryId());
|
||||||
item.addActionListener(this);
|
item.addActionListener(this);
|
||||||
menu.add(item);
|
menu.add(item);
|
||||||
}
|
}
|
||||||
add(menu);
|
add(menu);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
clientTabMenu = new JMenu("Tabs");
|
clientTabMenu = new JMenu("Tabs");
|
||||||
add(clientTabMenu);
|
add(clientTabMenu);
|
||||||
JMenuItem item = new JMenuItem("Close tab");
|
JMenuItem item = new JMenuItem("Close tab");
|
||||||
item.addActionListener(new ActionListener() {
|
item.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
JTabbedPane tabPane = getTabPane();
|
JTabbedPane tabPane = getTabPane();
|
||||||
if (tabPane.getSelectedIndex()>=0) {
|
if (tabPane.getSelectedIndex()>=0) {
|
||||||
tabPane.removeTabAt(tabPane.getSelectedIndex()); // todo release vasc frontend
|
tabPane.removeTabAt(tabPane.getSelectedIndex()); // todo release vasc frontend
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
});
|
clientTabMenu.add(item);
|
||||||
clientTabMenu.add(item);
|
JMenuItem itemAll = new JMenuItem("Close All tabs");
|
||||||
JMenuItem itemAll = new JMenuItem("Close All tabs");
|
itemAll.addActionListener(new ActionListener() {
|
||||||
itemAll.addActionListener(new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
JTabbedPane tabPane = getTabPane();
|
JTabbedPane tabPane = getTabPane();
|
||||||
for (int i=tabPane.getTabCount();i>0;i--) {
|
for (int i=tabPane.getTabCount();i>0;i--) {
|
||||||
tabPane.removeTabAt(i-1); // todo release vasc frontend
|
tabPane.removeTabAt(i-1); // todo release vasc frontend
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
clientTabMenu.add(itemAll);
|
clientTabMenu.add(itemAll);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JTabbedPane getTabPane() {
|
public JTabbedPane getTabPane() {
|
||||||
|
@ -148,66 +128,4 @@ public class JMainPanelMenuBar extends JMenuBar implements ActionListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
private void createMenuItems() {
|
|
||||||
JMenuItem openXmlItem = new JMenuItem("Import Xml");
|
|
||||||
openXmlItem.addActionListener(new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
try {
|
|
||||||
final JFileChooser fc = new JFileChooser();
|
|
||||||
//fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
|
||||||
int returnVal = fc.showOpenDialog((JMenuItem)e.getSource());
|
|
||||||
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
|
||||||
File file = fc.getSelectedFile();
|
|
||||||
//VascTechDemoStartup.getInstance().getVascControllerService().openFile(file);
|
|
||||||
}
|
|
||||||
} catch (Exception e1) {
|
|
||||||
e1.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
fileMenu.add(openXmlItem);
|
|
||||||
//JMenuItem closeXmlItem = new JMenuItem("Close");
|
|
||||||
//fileMenu.add(closeXmlItem);
|
|
||||||
fileMenu.addSeparator();
|
|
||||||
JMenuItem exitItem = new JMenuItem("Exit");
|
|
||||||
exitItem.addActionListener(new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
//JApplication.getInstance().exit();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
fileMenu.add(exitItem);
|
|
||||||
|
|
||||||
JMenuItem connectVascItem = new JMenuItem("Add Vasc");
|
|
||||||
connectVascItem.setEnabled(false);
|
|
||||||
connectVascItem.addActionListener(new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
vascMenu.add(connectVascItem);
|
|
||||||
|
|
||||||
JMenuItem connectLdapItem = new JMenuItem("Add Ldap");
|
|
||||||
connectLdapItem.setEnabled(false);
|
|
||||||
vascMenu.add(connectLdapItem);
|
|
||||||
vascMenu.addSeparator();
|
|
||||||
|
|
||||||
|
|
||||||
vascMenu.addSeparator();
|
|
||||||
JMenuItem removeEntryItem = new JMenuItem("Remove entry");
|
|
||||||
removeEntryItem.setEnabled(false);
|
|
||||||
removeEntryItem.addActionListener(new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
vascMenu.add(removeEntryItem);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tabMenu.add(itemAll);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.client.swing;
|
package net.forwardfire.vasc.demo.client.swing;
|
||||||
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLDecoder;
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.channels.FileChannel;
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -20,63 +33,58 @@ import java.util.logging.Logger;
|
||||||
import javax.naming.CommunicationException;
|
import javax.naming.CommunicationException;
|
||||||
import javax.naming.Context;
|
import javax.naming.Context;
|
||||||
import javax.naming.InitialContext;
|
import javax.naming.InitialContext;
|
||||||
import javax.naming.NameClassPair;
|
|
||||||
import javax.naming.NamingException;
|
|
||||||
import javax.security.auth.Subject;
|
|
||||||
import javax.security.auth.login.LoginContext;
|
import javax.security.auth.login.LoginContext;
|
||||||
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.VascMenuController;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.VascMenuController;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.user.LoginUserController;
|
import net.forwardfire.vasc.demo.tech.ejb3.user.ClientUserController;
|
||||||
import net.forwardfire.vasc.ejb3.VascServiceManager;
|
import net.forwardfire.vasc.ejb3.VascServiceManager;
|
||||||
|
import net.forwardfire.vasc.lib.i18n.bundle.RootApplicationBundle;
|
||||||
|
|
||||||
import org.jdesktop.application.Application;
|
import org.jdesktop.application.Application;
|
||||||
import org.jdesktop.application.FrameView;
|
import org.jdesktop.application.FrameView;
|
||||||
import org.jdesktop.application.SingleFrameApplication;
|
import org.jdesktop.application.SingleFrameApplication;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VascDemoSwingClient is the main swing remote client.
|
||||||
|
*
|
||||||
|
* @author Willem Cazander
|
||||||
|
* @version 1.0 Nov 10, 2012
|
||||||
|
*/
|
||||||
public class VascDemoSwingClient extends SingleFrameApplication {
|
public class VascDemoSwingClient extends SingleFrameApplication {
|
||||||
|
|
||||||
private static VascDemoSwingClient instance = null;
|
|
||||||
static protected Context context = null;
|
static protected Context context = null;
|
||||||
static protected LoginContext loginContext = null;
|
static protected LoginContext loginContext = null;
|
||||||
private Logger logger = null;
|
private Logger logger = null;
|
||||||
|
|
||||||
static public void main(String[] args) {
|
static public void main(String[] args) {
|
||||||
/*
|
|
||||||
instance = new VascDemoSwingClient();
|
|
||||||
instance.initialize(args);
|
|
||||||
instance.startup();
|
|
||||||
*/
|
|
||||||
Application.launch(VascDemoSwingClient.class, new String[] {});
|
Application.launch(VascDemoSwingClient.class, new String[] {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public VascDemoSwingClient getInstance() {
|
||||||
|
return (VascDemoSwingClient)SingleFrameApplication.getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startup() {
|
protected void startup() {
|
||||||
|
|
||||||
logger = Logger.getLogger(VascDemoSwingClient.class.getName());
|
logger = Logger.getLogger(VascDemoSwingClient.class.getName());
|
||||||
createContext();
|
|
||||||
try {
|
|
||||||
setJaasConfig();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
doLogin();
|
doLogin();
|
||||||
|
|
||||||
|
|
||||||
JdniTreePrinter printer = new JdniTreePrinter(false);
|
|
||||||
StringBuffer buf = new StringBuffer();
|
|
||||||
printer.printJNDITree(context, "", buf);
|
|
||||||
System.out.println(buf);
|
|
||||||
|
|
||||||
VascServiceManager vc = null;
|
VascServiceManager vc = null;
|
||||||
LoginUserController luc = null;
|
ClientUserController cuc = null;
|
||||||
VascMenuController vmc = null;
|
VascMenuController vmc = null;
|
||||||
try {
|
try {
|
||||||
vc = (VascServiceManager)context.lookup("vascServiceManagerRemote");
|
vc = (VascServiceManager)context.lookup("vascServiceManagerRemote");
|
||||||
System.out.println("ob: "+vc);
|
System.out.println("ob: "+vc);
|
||||||
|
|
||||||
luc = (LoginUserController)context.lookup("loginUserControllerRemote");
|
cuc = (ClientUserController)context.lookup("clientUserControllerRemote");
|
||||||
System.out.println("fll: "+luc.doClientLogin());
|
System.out.println("fll: "+cuc.doClientLogin());
|
||||||
|
|
||||||
|
// i18n fixme !!
|
||||||
|
RootApplicationBundle bundle = (RootApplicationBundle)ResourceBundle.getBundle(RootApplicationBundle.class.getName());
|
||||||
|
bundle.addBundleData(cuc.getResourceBundle(bundle.getLocale()));
|
||||||
|
|
||||||
vmc = (VascMenuController)context.lookup("vascMenuControllerRemote");
|
vmc = (VascMenuController)context.lookup("vascMenuControllerRemote");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -86,126 +94,48 @@ public class VascDemoSwingClient extends SingleFrameApplication {
|
||||||
JMainPanel mainPanel = new JMainPanel(vc,vmc);
|
JMainPanel mainPanel = new JMainPanel(vc,vmc);
|
||||||
SingleFrameApplication a = (VascDemoSwingClient)getInstance(); // BIG NOTE because of 'launch' for auto conf swing.
|
SingleFrameApplication a = (VascDemoSwingClient)getInstance(); // BIG NOTE because of 'launch' for auto conf swing.
|
||||||
FrameView mainView = a.getMainView();
|
FrameView mainView = a.getMainView();
|
||||||
|
mainView.getFrame().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
mainView.setComponent(mainPanel);
|
mainView.setComponent(mainPanel);
|
||||||
mainView.setMenuBar(new JMainPanelMenuBar(vmc,mainPanel));
|
mainView.setMenuBar(new JMainPanelMenuBar(vmc,mainPanel));
|
||||||
mainView.getFrame().setSize(600, 800);
|
mainView.getFrame().setSize(1000, 600);
|
||||||
mainView.getFrame().setVisible(true);
|
mainView.getFrame().setVisible(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void logout() {
|
||||||
* Created an context to the showplanner server.
|
SingleFrameApplication a = (VascDemoSwingClient)getInstance(); // BIG NOTE because of 'launch' for auto conf swing.
|
||||||
*/
|
FrameView mainView = a.getMainView();
|
||||||
private void createContext() {
|
mainView.getFrame().setVisible(false);
|
||||||
Properties props = new Properties();
|
|
||||||
String connectUrl = "http://localhost:8899/demo/ejb"; //System.getProperty("javaws.connecturl");
|
|
||||||
logger.info("Connecting to: "+connectUrl);
|
|
||||||
props.put(Context.PROVIDER_URL, connectUrl );
|
|
||||||
props.put("openejb.authentication.realmName", "vasc-auth-server");
|
|
||||||
props.put(Context.SECURITY_PRINCIPAL,"admin");
|
|
||||||
props.put(Context.SECURITY_CREDENTIALS,"admin123");
|
|
||||||
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
|
|
||||||
|
|
||||||
try {
|
startup(); // ugly ..
|
||||||
context = new InitialContext(props);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
//logger.log(Level.WARNING,e.getMessage(),e);
|
|
||||||
//ExceptionDialog err = new ExceptionDialog(e,true);
|
|
||||||
//err.showOpenDialog(null,i18n(VascDemoSwingClient.class,"dialogTitle"),i18n(VascDemoSwingClient.class,"dialogContext"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets our jaas config path
|
|
||||||
*/
|
|
||||||
private void setJaasConfig() throws IOException {
|
|
||||||
|
|
||||||
// tomee
|
|
||||||
String path = System.getProperty("java.security.auth.login.config");
|
|
||||||
if (path == null) {
|
|
||||||
URL url = VascDemoSwingClient.class.getClassLoader().getResource("META-INF/client.login.conf");
|
|
||||||
|
|
||||||
File tempFile = File.createTempFile("cached-", ".jar");
|
|
||||||
tempFile.deleteOnExit();
|
|
||||||
copyFile(url.openConnection().getInputStream(),tempFile);
|
|
||||||
String urlString = "file:"+tempFile.getAbsolutePath();
|
|
||||||
//logger.info("Setting jaas config property to url: "+urlString);
|
|
||||||
System.setProperty("java.security.auth.login.config", urlString);
|
|
||||||
logger.info("Setting jaas config property to url: "+urlString);
|
|
||||||
/*
|
|
||||||
if (resource != null) {
|
|
||||||
path = URLDecoder.decode(resource.getFile());
|
|
||||||
System.setProperty("java.security.auth.login.config", path);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
logger.warning("Could not find client.login.conf");
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/* jboss
|
|
||||||
URL url = Thread.currentThread().getContextClassLoader().getResource("META-INF/jaas.config");
|
|
||||||
String urlString = url.toExternalForm();
|
|
||||||
|
|
||||||
// jdk1.6 update10 has different classloader, so just copy for the moment..... ..
|
|
||||||
if (urlString.startsWith("jar:")) {
|
|
||||||
File tempFile = File.createTempFile("cached-", ".jar");
|
|
||||||
tempFile.deleteOnExit();
|
|
||||||
copyFile(url.openConnection().getInputStream(),tempFile);
|
|
||||||
urlString = "file:"+tempFile.getAbsolutePath();
|
|
||||||
}
|
|
||||||
|
|
||||||
//logger.info("Setting jaas config property to url: "+urlString);
|
|
||||||
System.setProperty("java.security.auth.login.config", urlString);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
private void copyFile(InputStream in, File out) throws IOException {
|
|
||||||
ByteBuffer buffer = ByteBuffer.allocate(1024*4);
|
|
||||||
byte[] bufferArray = buffer.array();
|
|
||||||
FileChannel outputChannel = new FileOutputStream(out).getChannel();
|
|
||||||
while (true) {
|
|
||||||
buffer.clear();
|
|
||||||
int lim = in.read(bufferArray);
|
|
||||||
if (lim < 0) {
|
|
||||||
break; // could not read anymore
|
|
||||||
}
|
|
||||||
buffer.flip();
|
|
||||||
buffer.limit(lim);
|
|
||||||
while (buffer.hasRemaining()) {
|
|
||||||
outputChannel.write(buffer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
outputChannel.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do an login on the server
|
* Do an login on the server
|
||||||
*/
|
*/
|
||||||
private void doLogin() {
|
private void doLogin() {
|
||||||
VascDemoUserLoginDialog loginHandler = new VascDemoUserLoginDialog();
|
VascDemoUserLoginDialog loginHandler = new VascDemoUserLoginDialog();
|
||||||
try {
|
loginHandler.setConnectUrl("http://localhost:8899/demo");
|
||||||
loginContext = new LoginContext("vasc-auth-client", loginHandler);
|
/*
|
||||||
loginContext.login();
|
try {
|
||||||
|
loginContext = new LoginContext("vasc-auth-client", loginHandler);
|
||||||
|
loginContext.login();
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
e.printStackTrace();
|
|
||||||
JOptionPane.showMessageDialog(null, i18n(this,"dialogNoLoginContext"),i18n(this,"dialogTitle"), JOptionPane.WARNING_MESSAGE);
|
JOptionPane.showMessageDialog(null, i18n(this,"dialogNoLoginContext"),i18n(this,"dialogTitle"), JOptionPane.WARNING_MESSAGE);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Subject subject = loginContext.getSubject();
|
loginHandler.handle();
|
||||||
|
if(doLoginContext(loginHandler)) {
|
||||||
if(doLoginTest()) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
loginContext.login();
|
loginHandler.handle();
|
||||||
if(doLoginTest()) {
|
if(doLoginContext(loginHandler)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
loginContext.login();
|
loginHandler.handle();
|
||||||
if(doLoginTest()) {
|
if(doLoginContext(loginHandler)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,25 +164,45 @@ public class VascDemoSwingClient extends SingleFrameApplication {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if we have 'login' role on server.
|
* Create naming context and check if we have 'login' role on server.
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
private boolean doLoginTest() throws Exception {
|
private boolean doLoginContext(VascDemoUserLoginDialog loginHandler) throws Exception {
|
||||||
|
Properties props = new Properties();
|
||||||
|
String connectUrl = loginHandler.getConnectUrl()+"/ejb";
|
||||||
|
logger.info("Connecting to: "+connectUrl);
|
||||||
|
props.put(Context.PROVIDER_URL, connectUrl );
|
||||||
|
props.put("openejb.authentication.realmName", "vasc-auth-server");
|
||||||
|
props.put(Context.SECURITY_PRINCIPAL,loginHandler.getUsername());
|
||||||
|
props.put(Context.SECURITY_CREDENTIALS,loginHandler.getPassword());
|
||||||
|
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
|
||||||
try {
|
try {
|
||||||
LoginUserController loginManager = (LoginUserController)context.lookup("loginUserControllerRemote");
|
context = new InitialContext(props);
|
||||||
loginManager.doClientLogin();
|
ClientUserController loginManager = (ClientUserController)context.lookup("clientUserControllerRemote");
|
||||||
return true;
|
loginManager.doClientLogin();
|
||||||
|
return true;
|
||||||
} catch (javax.naming.NameNotFoundException e) {
|
} catch (javax.naming.NameNotFoundException e) {
|
||||||
JOptionPane.showMessageDialog(null, "Server is not deployed.\nPlease wait a couple of minuts and try again.");
|
JOptionPane.showMessageDialog(null, "Server is not deployed.\nPlease wait a couple of minuts and try again.");
|
||||||
return false;
|
return false;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
JOptionPane.showMessageDialog(null, "Server error: "+e.getMessage());
|
JOptionPane.showMessageDialog(null, "Server error: "+e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String i18n(Object obj,String key,Object...params) {
|
||||||
|
if(obj==null) { throw new NullPointerException("Can't get key of null obj"); }
|
||||||
|
if (key==null) { throw new NullPointerException("key may not be null"); }
|
||||||
|
if(obj instanceof Class) {
|
||||||
|
key=((Class<?>)obj).getName()+"."+key;
|
||||||
|
} else {
|
||||||
|
key=obj.getClass().getName()+"."+key;
|
||||||
|
}
|
||||||
|
return i18n(key,params);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Some simple hardcoded i18n function here
|
* Some simple hardcoded i18n function here
|
||||||
*
|
*
|
||||||
|
@ -260,102 +210,16 @@ public class VascDemoSwingClient extends SingleFrameApplication {
|
||||||
* @param params
|
* @param params
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
static protected String i18n(Object obj,String key,Object...params) {
|
public String i18n(String key,Object...params) {
|
||||||
if(obj==null) { throw new NullPointerException("Can't get key of null obj"); }
|
|
||||||
if (key==null) { throw new NullPointerException("key may not be null"); }
|
|
||||||
if(obj instanceof Class) {
|
|
||||||
key=((Class<?>)obj).getName()+"."+key;
|
|
||||||
} else {
|
|
||||||
key=obj.getClass().getName()+"."+key;
|
|
||||||
}
|
|
||||||
return key;
|
|
||||||
/*
|
|
||||||
try {
|
try {
|
||||||
String text = ResourceBundle.getBundle("resources.i18n.root").getString(key);
|
String text = ResourceBundle.getBundle(RootApplicationBundle.class.getName()).getString(key);
|
||||||
if (params != null) {
|
if (params != null) {
|
||||||
MessageFormat mf = new MessageFormat(text);
|
MessageFormat mf = new MessageFormat(text);
|
||||||
text = mf.format(params, new StringBuffer(), null).toString();
|
text = mf.format(params, new StringBuffer(), null).toString();
|
||||||
}
|
}
|
||||||
return text;
|
return text;
|
||||||
} catch(MissingResourceException e){
|
} catch(MissingResourceException e){
|
||||||
return "MISSING: '"+key+"'";
|
return key;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
class JdniTreePrinter {
|
|
||||||
|
|
||||||
boolean printXml = true;
|
|
||||||
|
|
||||||
public JdniTreePrinter(boolean printXml) {
|
|
||||||
this.printXml=printXml;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printJNDITree(javax.naming.Context context,String ct,StringBuffer buf) {
|
|
||||||
if (printXml) {
|
|
||||||
buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
|
||||||
buf.append("<NamingRoot name=\""+ct+"\">\n");
|
|
||||||
}
|
|
||||||
printTree(context,ct,buf);
|
|
||||||
if (printXml) {
|
|
||||||
buf.append("</NamingRoot>\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printTree(javax.naming.Context context,String ct,StringBuffer buf) {
|
|
||||||
try {
|
|
||||||
printNE(context,context.list(ct), ct,buf);
|
|
||||||
} catch (NamingException e) {
|
|
||||||
//ignore leaf node exception
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void printNE(javax.naming.Context context,javax.naming.NamingEnumeration<?> ne, String parentctx,StringBuffer buf) throws NamingException {
|
|
||||||
if (ne==null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
while (ne.hasMoreElements()) {
|
|
||||||
NameClassPair next = (NameClassPair) ne.nextElement();
|
|
||||||
if (printXml) {
|
|
||||||
printIndent(buf);
|
|
||||||
buf.append("<NamingRoot name=\""+next.getName()+"\" className=\""+next.getClassName()+"\">\n");
|
|
||||||
increaseIndent();
|
|
||||||
printTree(context,(parentctx.length() == 0) ? next.getName() : parentctx + "/" + next.getName(),buf);
|
|
||||||
decreaseIndent();
|
|
||||||
|
|
||||||
printIndent(buf);
|
|
||||||
buf.append("</NamingRoot>\n");
|
|
||||||
} else {
|
|
||||||
printEntry(next,buf);
|
|
||||||
increaseIndent();
|
|
||||||
printTree(context,(parentctx.length() == 0) ? next.getName() : parentctx + "/" + next.getName(),buf);
|
|
||||||
decreaseIndent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void printEntry(javax.naming.NameClassPair next,StringBuffer buf) {
|
|
||||||
printIndent(buf);
|
|
||||||
buf.append("-->");
|
|
||||||
buf.append(next);
|
|
||||||
buf.append("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private int indentLevel = 0;
|
|
||||||
|
|
||||||
private void increaseIndent() {
|
|
||||||
indentLevel += 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void decreaseIndent() {
|
|
||||||
indentLevel -= 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void printIndent(StringBuffer buf) {
|
|
||||||
for (int i = 0; i < indentLevel; i++) {
|
|
||||||
buf.append(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,27 @@
|
||||||
/*
|
/*
|
||||||
* @(#)DialogCallbackHandler.java 1.9 03/12/19
|
* Copyright 2007-2012 forwardfire.net All rights reserved.
|
||||||
*
|
*
|
||||||
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
* that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.forwardfire.vasc.demo.client.swing;
|
package net.forwardfire.vasc.demo.client.swing;
|
||||||
|
|
||||||
import javax.security.auth.callback.Callback;
|
|
||||||
import javax.security.auth.callback.CallbackHandler;
|
|
||||||
import javax.security.auth.callback.ConfirmationCallback;
|
|
||||||
import javax.security.auth.callback.NameCallback;
|
|
||||||
import javax.security.auth.callback.PasswordCallback;
|
|
||||||
import javax.security.auth.callback.TextOutputCallback;
|
|
||||||
import javax.security.auth.callback.UnsupportedCallbackException;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
|
@ -59,14 +66,15 @@ import javax.swing.JTextField;
|
||||||
*
|
*
|
||||||
* @see javax.security.auth.callback
|
* @see javax.security.auth.callback
|
||||||
*/
|
*/
|
||||||
public class VascDemoUserLoginDialog implements CallbackHandler {
|
public class VascDemoUserLoginDialog {
|
||||||
|
|
||||||
/* The parent window, or null if using the default parent */
|
|
||||||
private Component parentComponent;
|
private Component parentComponent;
|
||||||
private static final int JPasswordFieldLen = 8;
|
private static final int JPasswordFieldLen = 8;
|
||||||
private int loginTry = 0;
|
private int loginTry = 0;
|
||||||
private String userName = null;
|
private String connectUrl = null;
|
||||||
|
private String username = null;
|
||||||
|
private String password = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a callback dialog with the default parent window.
|
* Creates a callback dialog with the default parent window.
|
||||||
*/
|
*/
|
||||||
|
@ -93,15 +101,9 @@ public class VascDemoUserLoginDialog implements CallbackHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the specified set of callbacks.
|
* Handles the login dialog
|
||||||
*
|
|
||||||
* @param callbacks
|
|
||||||
* the callbacks to handle
|
|
||||||
* @throws UnsupportedCallbackException
|
|
||||||
* if the callback is not an instance of NameCallback or
|
|
||||||
* PasswordCallback
|
|
||||||
*/
|
*/
|
||||||
public void handle(Callback[] callbacks) throws UnsupportedCallbackException {
|
public void handle() {
|
||||||
this.loginTry++;
|
this.loginTry++;
|
||||||
/* Collect messages to display in the dialog */
|
/* Collect messages to display in the dialog */
|
||||||
final JPanel loginDesign = new JPanel();
|
final JPanel loginDesign = new JPanel();
|
||||||
|
@ -110,32 +112,28 @@ public class VascDemoUserLoginDialog implements CallbackHandler {
|
||||||
final JPanel logoPanel = new JPanel() {
|
final JPanel logoPanel = new JPanel() {
|
||||||
private static final long serialVersionUID = 10l;
|
private static final long serialVersionUID = 10l;
|
||||||
protected void paintComponent(Graphics g) {
|
protected void paintComponent(Graphics g) {
|
||||||
Graphics2D g2d = (Graphics2D)g;
|
Graphics2D g2d = (Graphics2D)g;
|
||||||
|
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
|
||||||
// for antialiasing geometric shapes
|
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
||||||
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
|
g2d.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
|
||||||
// for antialiasing text
|
|
||||||
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
|
||||||
// to go for quality over speed
|
|
||||||
g2d.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
|
|
||||||
|
|
||||||
// Paint the default look of the panel.
|
// Paint the default look of the panel.
|
||||||
super.paintComponent(g2d);
|
super.paintComponent(g2d);
|
||||||
|
|
||||||
int offsetX = 0; // for windows systems
|
int offsetX = 0; // for windows systems
|
||||||
boolean isWindows = System.getProperty("os.name").toLowerCase().indexOf("windows") != -1;
|
boolean isWindows = System.getProperty("os.name").toLowerCase().indexOf("windows") != -1;
|
||||||
if (isWindows) {
|
if (isWindows) {
|
||||||
offsetX += 25;
|
offsetX += 25;
|
||||||
}
|
}
|
||||||
|
|
||||||
g2d.setColor(Color.BLACK);
|
g2d.setColor(Color.BLACK);
|
||||||
g2d.fillRect(0,0,getWidth(),getHeight());
|
g2d.fillRect(0,0,getWidth(),getHeight());
|
||||||
g2d.setColor(new Color(238,212,1));
|
g2d.setColor(new Color(238,212,1));
|
||||||
|
|
||||||
//int w = (getWidth()/2)-(logoImage.getWidth(null)/2);
|
//int w = (getWidth()/2)-(logoImage.getWidth(null)/2);
|
||||||
//int h = (getHeight()/2)-(logoImage.getHeight(null)/2);
|
//int h = (getHeight()/2)-(logoImage.getHeight(null)/2);
|
||||||
//g2d.drawImage(logoImage, w, h, this);
|
//g2d.drawImage(logoImage, w, h, this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
logoPanel.setPreferredSize(new Dimension(200, 170));
|
logoPanel.setPreferredSize(new Dimension(200, 170));
|
||||||
logoPanel.setBorder(BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
|
logoPanel.setBorder(BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
|
||||||
|
@ -148,92 +146,64 @@ public class VascDemoUserLoginDialog implements CallbackHandler {
|
||||||
loginDesign.add(namePanel);
|
loginDesign.add(namePanel);
|
||||||
loginDesign.add(Box.createVerticalStrut(5));
|
loginDesign.add(Box.createVerticalStrut(5));
|
||||||
|
|
||||||
final GridLayout messagesLayout = new GridLayout(2,2);
|
final GridLayout messagesLayout = new GridLayout(3,2);
|
||||||
final JPanel messages = new JPanel();
|
final JPanel messages = new JPanel();
|
||||||
messages.setLayout(messagesLayout);
|
messages.setLayout(messagesLayout);
|
||||||
|
|
||||||
/* Collection actions to perform if the user clicks OK */
|
/* Collection actions to perform if the user clicks OK */
|
||||||
final List<Action> okActions = new ArrayList<Action>(2);
|
final List<Action> okActions = new ArrayList<Action>(2);
|
||||||
ConfirmationInfo confirmation = new ConfirmationInfo();
|
|
||||||
|
// Add server field
|
||||||
|
JLabel serverName = new JLabel("Server:");
|
||||||
|
final JTextField serverField = new JTextField(getConnectUrl());
|
||||||
|
messages.add(serverName);
|
||||||
|
messages.add(serverField);
|
||||||
|
okActions.add(new Action() {
|
||||||
|
public void perform() {
|
||||||
|
connectUrl = serverField.getText();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// hackje for focus
|
// hackje for focus
|
||||||
final JTextField name = new JTextField();
|
final JTextField name = new JTextField();
|
||||||
confirmation.initialValue=name;
|
final JPasswordField pass = new JPasswordField(JPasswordFieldLen);
|
||||||
|
|
||||||
for (int i = 0; i < callbacks.length; i++) {
|
JLabel prompt = new JLabel("Username:");
|
||||||
if (callbacks[i] instanceof TextOutputCallback) {
|
String defaultName = null;
|
||||||
TextOutputCallback tc = (TextOutputCallback) callbacks[i];
|
|
||||||
|
// if (check some property)
|
||||||
switch (tc.getMessageType()) {
|
defaultName = "";
|
||||||
case TextOutputCallback.INFORMATION:
|
if (defaultName != null) {
|
||||||
confirmation.messageType = JOptionPane.INFORMATION_MESSAGE;
|
name.setText(defaultName);
|
||||||
break;
|
|
||||||
case TextOutputCallback.WARNING:
|
|
||||||
confirmation.messageType = JOptionPane.WARNING_MESSAGE;
|
|
||||||
break;
|
|
||||||
case TextOutputCallback.ERROR:
|
|
||||||
confirmation.messageType = JOptionPane.ERROR_MESSAGE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new UnsupportedCallbackException(callbacks[i], "Unrecognized message type");
|
|
||||||
}
|
|
||||||
messages.add(new JLabel(tc.getMessage()));
|
|
||||||
|
|
||||||
} else if (callbacks[i] instanceof NameCallback) {
|
|
||||||
final NameCallback nc = (NameCallback) callbacks[i];
|
|
||||||
|
|
||||||
JLabel prompt = new JLabel(nc.getPrompt());
|
|
||||||
String defaultName = nc.getDefaultName();
|
|
||||||
|
|
||||||
// if (check some property)
|
|
||||||
defaultName = "";
|
|
||||||
if (defaultName != null) {
|
|
||||||
name.setText(defaultName);
|
|
||||||
}
|
|
||||||
// default to last user name
|
|
||||||
if (userName !=null ) {
|
|
||||||
name.setText(userName);
|
|
||||||
}
|
|
||||||
messages.add(prompt);
|
|
||||||
messages.add(name);
|
|
||||||
|
|
||||||
/* Store the name back into the callback if OK */
|
|
||||||
okActions.add(new Action() {
|
|
||||||
public void perform() {
|
|
||||||
nc.setName(name.getText());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
} else if (callbacks[i] instanceof PasswordCallback) {
|
|
||||||
final PasswordCallback pc = (PasswordCallback) callbacks[i];
|
|
||||||
|
|
||||||
JLabel prompt = new JLabel(pc.getPrompt());
|
|
||||||
|
|
||||||
final JPasswordField password = new JPasswordField(JPasswordFieldLen);
|
|
||||||
if (!pc.isEchoOn()) {
|
|
||||||
password.setEchoChar('*');
|
|
||||||
}
|
|
||||||
messages.add(prompt);
|
|
||||||
messages.add(password);
|
|
||||||
|
|
||||||
okActions.add(new Action() {
|
|
||||||
public void perform() {
|
|
||||||
pc.setPassword(password.getPassword());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
} else if (callbacks[i] instanceof ConfirmationCallback) {
|
|
||||||
ConfirmationCallback cc = (ConfirmationCallback) callbacks[i];
|
|
||||||
|
|
||||||
confirmation.setCallback(cc);
|
|
||||||
if (cc.getPrompt() != null) {
|
|
||||||
messages.add(new JLabel(cc.getPrompt()));
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// default to last user name
|
||||||
|
if (username !=null ) {
|
||||||
|
name.setText(username);
|
||||||
|
}
|
||||||
|
messages.add(prompt);
|
||||||
|
messages.add(name);
|
||||||
|
|
||||||
|
/* Store the name back into the callback if OK */
|
||||||
|
okActions.add(new Action() {
|
||||||
|
public void perform() {
|
||||||
|
username = name.getText();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
prompt = new JLabel("Password:");
|
||||||
|
|
||||||
|
//if (!pc.isEchoOn()) {
|
||||||
|
pass.setEchoChar('*');
|
||||||
|
//}
|
||||||
|
messages.add(prompt);
|
||||||
|
messages.add(pass);
|
||||||
|
|
||||||
|
okActions.add(new Action() {
|
||||||
|
public void perform() {
|
||||||
|
password = new String(pass.getPassword());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (this.loginTry>1) {
|
if (this.loginTry>1) {
|
||||||
JPanel messagesPanel = new JPanel();
|
JPanel messagesPanel = new JPanel();
|
||||||
|
@ -251,25 +221,17 @@ public class VascDemoUserLoginDialog implements CallbackHandler {
|
||||||
loginDesign.add(messagesPanel);
|
loginDesign.add(messagesPanel);
|
||||||
/* Display the dialog */
|
/* Display the dialog */
|
||||||
|
|
||||||
|
Object[] options = null;
|
||||||
/// JOptionPane(Object message, int messageType, int optionType, Icon icon, Object[] options, Object initialValue)
|
/// JOptionPane(Object message, int messageType, int optionType, Icon icon, Object[] options, Object initialValue)
|
||||||
JOptionPane jop = new JOptionPane(loginDesign, JOptionPane.PLAIN_MESSAGE,confirmation.optionType,null,
|
JOptionPane jop = new JOptionPane(loginDesign, JOptionPane.PLAIN_MESSAGE,JOptionPane.OK_CANCEL_OPTION,null,options,name);
|
||||||
confirmation.options,confirmation.initialValue);
|
|
||||||
|
|
||||||
JDialog dialog = jop.createDialog(parentComponent,"Vasc Demo Login");
|
JDialog dialog = jop.createDialog(parentComponent,"Vasc Demo Login");
|
||||||
|
|
||||||
// We alway request focus after the windows gets focus
|
// We alway request focus after the windows gets focus
|
||||||
dialog.addWindowFocusListener(new WindowFocusListener() {
|
dialog.addWindowFocusListener(new WindowFocusListener() {
|
||||||
/**
|
|
||||||
* @see java.awt.event.WindowFocusListener#windowGainedFocus(java.awt.event.WindowEvent)
|
|
||||||
*/
|
|
||||||
public void windowGainedFocus(WindowEvent arg0) {
|
public void windowGainedFocus(WindowEvent arg0) {
|
||||||
//System.out.println("request focus window focus");
|
name.requestFocus();
|
||||||
name.requestFocus();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @see java.awt.event.WindowFocusListener#windowLostFocus(java.awt.event.WindowEvent)
|
|
||||||
*/
|
|
||||||
public void windowLostFocus(WindowEvent arg0) {
|
public void windowLostFocus(WindowEvent arg0) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -299,10 +261,7 @@ public class VascDemoUserLoginDialog implements CallbackHandler {
|
||||||
// is null when escaping by window closing
|
// is null when escaping by window closing
|
||||||
result = JOptionPane.CANCEL_OPTION;
|
result = JOptionPane.CANCEL_OPTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy user name for next try
|
|
||||||
userName = name.getText();
|
|
||||||
|
|
||||||
/* Perform the OK actions */
|
/* Perform the OK actions */
|
||||||
if (result == JOptionPane.OK_OPTION || result == JOptionPane.YES_OPTION) {
|
if (result == JOptionPane.OK_OPTION || result == JOptionPane.YES_OPTION) {
|
||||||
Iterator<Action> iterator = okActions.iterator();
|
Iterator<Action> iterator = okActions.iterator();
|
||||||
|
@ -312,97 +271,34 @@ public class VascDemoUserLoginDialog implements CallbackHandler {
|
||||||
} else if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.NO_OPTION) {
|
} else if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.NO_OPTION) {
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
confirmation.handleResult(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides assistance with translating between JAAS and Swing confirmation
|
* @return the username
|
||||||
* dialogs.
|
|
||||||
*/
|
*/
|
||||||
private static class ConfirmationInfo {
|
public String getUsername() {
|
||||||
|
return username;
|
||||||
private int[] translations;
|
}
|
||||||
|
|
||||||
int optionType = JOptionPane.OK_CANCEL_OPTION;
|
/**
|
||||||
Object[] options = null;
|
* @return the password
|
||||||
Object initialValue = null;
|
*/
|
||||||
|
public String getPassword() {
|
||||||
int messageType = JOptionPane.QUESTION_MESSAGE;
|
return password;
|
||||||
|
}
|
||||||
private ConfirmationCallback callback;
|
|
||||||
|
/**
|
||||||
/* Set the confirmation callback handler */
|
* @return the connectUrl
|
||||||
void setCallback(ConfirmationCallback callback) throws UnsupportedCallbackException {
|
*/
|
||||||
this.callback = callback;
|
public String getConnectUrl() {
|
||||||
|
return connectUrl;
|
||||||
int confirmationOptionType = callback.getOptionType();
|
}
|
||||||
switch (confirmationOptionType) {
|
|
||||||
case ConfirmationCallback.YES_NO_OPTION:
|
/**
|
||||||
optionType = JOptionPane.YES_NO_OPTION;
|
* @param connectUrl the connectUrl to set
|
||||||
translations = new int[] {
|
*/
|
||||||
JOptionPane.YES_OPTION, ConfirmationCallback.YES, JOptionPane.NO_OPTION, ConfirmationCallback.NO, JOptionPane.CLOSED_OPTION, ConfirmationCallback.NO
|
public void setConnectUrl(String connectUrl) {
|
||||||
};
|
this.connectUrl = connectUrl;
|
||||||
break;
|
|
||||||
case ConfirmationCallback.YES_NO_CANCEL_OPTION:
|
|
||||||
optionType = JOptionPane.YES_NO_CANCEL_OPTION;
|
|
||||||
translations = new int[] {
|
|
||||||
JOptionPane.YES_OPTION, ConfirmationCallback.YES, JOptionPane.NO_OPTION, ConfirmationCallback.NO, JOptionPane.CANCEL_OPTION,
|
|
||||||
ConfirmationCallback.CANCEL, JOptionPane.CLOSED_OPTION, ConfirmationCallback.CANCEL
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
case ConfirmationCallback.OK_CANCEL_OPTION:
|
|
||||||
optionType = JOptionPane.OK_CANCEL_OPTION;
|
|
||||||
translations = new int[] {
|
|
||||||
JOptionPane.OK_OPTION, ConfirmationCallback.OK, JOptionPane.CANCEL_OPTION, ConfirmationCallback.CANCEL, JOptionPane.CLOSED_OPTION,
|
|
||||||
ConfirmationCallback.CANCEL
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
case ConfirmationCallback.UNSPECIFIED_OPTION:
|
|
||||||
options = callback.getOptions();
|
|
||||||
/*
|
|
||||||
* There's no way to know if the default option means to
|
|
||||||
* cancel the login, but there isn't a better way to guess
|
|
||||||
* this.
|
|
||||||
*/
|
|
||||||
translations = new int[] {
|
|
||||||
JOptionPane.CLOSED_OPTION, callback.getDefaultOption()
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new UnsupportedCallbackException(callback, "Unrecognized option type: " + confirmationOptionType);
|
|
||||||
}
|
|
||||||
|
|
||||||
int confirmationMessageType = callback.getMessageType();
|
|
||||||
switch (confirmationMessageType) {
|
|
||||||
case ConfirmationCallback.WARNING:
|
|
||||||
messageType = JOptionPane.WARNING_MESSAGE;
|
|
||||||
break;
|
|
||||||
case ConfirmationCallback.ERROR:
|
|
||||||
messageType = JOptionPane.ERROR_MESSAGE;
|
|
||||||
break;
|
|
||||||
case ConfirmationCallback.INFORMATION:
|
|
||||||
messageType = JOptionPane.INFORMATION_MESSAGE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new UnsupportedCallbackException(callback, "Unrecognized message type: " + confirmationMessageType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Process the result returned by the Swing dialog */
|
|
||||||
void handleResult(int result) {
|
|
||||||
if (callback == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < translations.length; i += 2) {
|
|
||||||
if (translations[i] == result) {
|
|
||||||
result = translations[i + 1];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
callback.setSelectedIndex(result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
vasc-auth-client {
|
|
||||||
org.apache.openejb.client.ClientLoginModule required
|
|
||||||
debug=true
|
|
||||||
openejb.server.uri="http://localhost:8899/demo/ejb";
|
|
||||||
};
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
config.charset=UTF-8
|
||||||
|
config.bundles=bundle1
|
||||||
|
#,bundle2
|
||||||
|
|
||||||
|
# bundle list to merge and load
|
||||||
|
bundle1.uri=net.forwardfire.vasc.demo.client.swing.resources.VascDemoSwingClient
|
||||||
|
|
||||||
|
#bundle2.uri=data/vasc-bundle.properties
|
||||||
|
#bundle2.type=FILE
|
||||||
|
#bundle2.optional=true
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2011, Willem Cazander
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||||
|
# that the following conditions are met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||||
|
# following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||||
|
# the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Application's properties
|
||||||
|
Application.name = Vasc Demo Tech
|
||||||
|
Application.title = VascDemoTech
|
||||||
|
Application.vendor = Willem Cazander
|
||||||
|
Application.homepage = http://vasc.forwardfire.org/
|
||||||
|
Application.vendorId = vasc
|
||||||
|
Application.id = vascdemotech
|
||||||
|
Application.lookAndFeel = com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
|
||||||
|
#Application.icon = images/icon.png
|
|
@ -9,11 +9,29 @@
|
||||||
<name>vasc-demo-tech-ejb3</name>
|
<name>vasc-demo-tech-ejb3</name>
|
||||||
<description>vasc-demo-tech-ejb3</description>
|
<description>vasc-demo-tech-ejb3</description>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax</groupId>
|
<groupId>net.forwardfire.vasc</groupId>
|
||||||
<artifactId>javaee-api</artifactId>
|
<artifactId>vasc-core</artifactId>
|
||||||
<version>${javaee-api.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.forwardfire.vasc</groupId>
|
||||||
|
<artifactId>vasc-core-ejb3-client</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax</groupId>
|
||||||
|
<artifactId>javaee-api</artifactId>
|
||||||
|
<version>${javaee-api.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.forwardfire.vasc.lib</groupId>
|
||||||
|
<artifactId>vasc-lib-i18n</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
|
@ -37,9 +37,11 @@ import javax.naming.InitialContext;
|
||||||
import javax.naming.NamingException;
|
import javax.naming.NamingException;
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import net.forwardfire.vasc.core.VascController;
|
||||||
|
import net.forwardfire.vasc.core.VascEntry;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryAccessType;
|
||||||
|
import net.forwardfire.vasc.core.VascEntryGroup;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenu;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenu;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuComparator;
|
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuGroupComparator;
|
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuWebComparator;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuWebComparator;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuGroup;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuGroup;
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuWeb;
|
import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuWeb;
|
||||||
|
@ -54,17 +56,12 @@ import net.forwardfire.vasc.demo.tech.ejb3.menu.model.VascMenuWebType;
|
||||||
public class VascMenuControllerImpl implements VascMenuControllerLocal,VascMenuControllerRemote {
|
public class VascMenuControllerImpl implements VascMenuControllerLocal,VascMenuControllerRemote {
|
||||||
|
|
||||||
private VascMenuWebComparator vascMenuWebComparator = null;
|
private VascMenuWebComparator vascMenuWebComparator = null;
|
||||||
private VascMenuGroupComparator vascMenuGroupComparator = null;
|
|
||||||
private VascMenuComparator vascMenuComparator = null;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SessionContext session;
|
private SessionContext session;
|
||||||
|
|
||||||
|
|
||||||
public VascMenuControllerImpl() {
|
public VascMenuControllerImpl() {
|
||||||
vascMenuWebComparator = new VascMenuWebComparator();
|
vascMenuWebComparator = new VascMenuWebComparator();
|
||||||
vascMenuGroupComparator = new VascMenuGroupComparator();
|
|
||||||
vascMenuComparator = new VascMenuComparator();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<VascMenuWeb> fetchVascMenuWeb() {
|
public List<VascMenuWeb> fetchVascMenuWeb() {
|
||||||
|
@ -104,78 +101,7 @@ public class VascMenuControllerImpl implements VascMenuControllerLocal,VascMenuC
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<VascMenuGroup> fetchVascMenuGroup() {
|
|
||||||
List<VascMenuGroup> result = new ArrayList<VascMenuGroup>(50);
|
|
||||||
Connection connection = null;
|
|
||||||
try {
|
|
||||||
DataSource ds = getDataSource("openejb:Resource/jdbc/DemoManagerDataDS");
|
|
||||||
connection = ds.getConnection();
|
|
||||||
Statement s = connection.createStatement();
|
|
||||||
s.execute("SELECT * FROM VASC_MENU_GROUP");
|
|
||||||
ResultSet rs = s.getResultSet();
|
|
||||||
while (rs.next()) {
|
|
||||||
VascMenuGroup menu = new VascMenuGroup();
|
|
||||||
menu.setId(rs.getString(1));
|
|
||||||
menu.setTitle(rs.getString(2));
|
|
||||||
menu.setActive(rs.getBoolean(3));
|
|
||||||
menu.setRoles(rs.getString(4));
|
|
||||||
menu.setMenuOrder(rs.getInt(5));
|
|
||||||
if (filterVascMenuRoles(menu.getActive(),menu.getRoles())==false) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
result.add(menu);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
|
||||||
if (connection!=null) {
|
|
||||||
try {
|
|
||||||
connection.close();
|
|
||||||
} catch (Exception e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<VascMenu> fetchVascMenu() {
|
|
||||||
List<VascMenu> result = new ArrayList<VascMenu>(50);
|
|
||||||
Connection connection = null;
|
|
||||||
try {
|
|
||||||
DataSource ds = getDataSource("openejb:Resource/jdbc/DemoManagerDataDS");
|
|
||||||
connection = ds.getConnection();
|
|
||||||
Statement s = connection.createStatement();
|
|
||||||
s.execute("SELECT * FROM VASC_MENU");
|
|
||||||
ResultSet rs = s.getResultSet();
|
|
||||||
while (rs.next()) {
|
|
||||||
VascMenu menu = new VascMenu();
|
|
||||||
menu.setId(rs.getInt(1));
|
|
||||||
menu.setVascEntryId(rs.getString(2));
|
|
||||||
menu.setTitle(rs.getString(3));
|
|
||||||
menu.setActive(rs.getBoolean(4));
|
|
||||||
menu.setRoles(rs.getString(5));
|
|
||||||
menu.setMenuOrder(rs.getInt(6));
|
|
||||||
menu.setMenuGroup(rs.getString(7));
|
|
||||||
if (filterVascMenuRoles(menu.getActive(),menu.getRoles())==false) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
result.add(menu);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
|
||||||
if (connection!=null) {
|
|
||||||
try {
|
|
||||||
connection.close();
|
|
||||||
} catch (Exception e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private DataSource getDataSource(String name) throws SQLException {
|
private DataSource getDataSource(String name) throws SQLException {
|
||||||
try {
|
try {
|
||||||
|
@ -210,11 +136,28 @@ public class VascMenuControllerImpl implements VascMenuControllerLocal,VascMenuC
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<VascMenuGroup> getFilteredMenuGroup() {
|
public List<VascMenuGroup> getFilteredMenuGroup() {
|
||||||
List<VascMenuGroup> result = fetchVascMenuGroup();
|
|
||||||
for (VascMenuGroup group:result) {
|
VascController vc = null;
|
||||||
group.setMenus(getFilteredMenu(group.getId()));
|
try {
|
||||||
|
Context initialContext = new InitialContext();
|
||||||
|
vc = (VascController)initialContext.lookup("openejb:Resource/vasc/server-tech");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
Collections.sort(result,vascMenuGroupComparator);
|
|
||||||
|
List<VascMenuGroup> result = new ArrayList<VascMenuGroup>(20);
|
||||||
|
for (String groupdId:vc.getVascEntryController().getVascEntryGroupIds()) {
|
||||||
|
VascEntryGroup veg = vc.getVascEntryController().getVascEntryGroupById(groupdId);
|
||||||
|
if (filterVascMenuRoles(veg.getView(),veg.getRolesView())==false) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
VascMenuGroup group = new VascMenuGroup();
|
||||||
|
group.setId(veg.getId());
|
||||||
|
group.setTitleKey(veg.getName());
|
||||||
|
group.setMenus(getFilteredMenu(group.getId()));
|
||||||
|
result.add(group);
|
||||||
|
}
|
||||||
|
// Collections.sort(result,vascMenuGroupComparator);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,13 +165,33 @@ public class VascMenuControllerImpl implements VascMenuControllerLocal,VascMenuC
|
||||||
if (groupId==null) {
|
if (groupId==null) {
|
||||||
throw new NullPointerException("Can't filter on null groupId.");
|
throw new NullPointerException("Can't filter on null groupId.");
|
||||||
}
|
}
|
||||||
List<VascMenu> result = new ArrayList<VascMenu>(15);
|
VascController vc = null;
|
||||||
for (VascMenu menu:fetchVascMenu()) {
|
try {
|
||||||
if (groupId.equals(menu.getMenuGroup())) {
|
Context initialContext = new InitialContext();
|
||||||
result.add(menu);
|
vc = (VascController)initialContext.lookup("openejb:Resource/vasc/server-tech");
|
||||||
}
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
Collections.sort(result,vascMenuComparator);
|
List<VascMenu> result = new ArrayList<VascMenu>(15);
|
||||||
|
for (String vascEntryId:vc.getVascEntryController().getVascEntryByGroupId(groupId)) {
|
||||||
|
VascEntry ve = vc.getVascEntryController().getVascEntryById(vascEntryId);
|
||||||
|
if (ve.getAccessType()!=null && (
|
||||||
|
ve.getAccessType()==VascEntryAccessType.ENTRY_LINK |
|
||||||
|
ve.getAccessType()==VascEntryAccessType.ENTRY_LIST
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (filterVascMenuRoles(ve.getView(),ve.getRolesView())==false) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
VascMenu menu = new VascMenu();
|
||||||
|
menu.setVascEntryId(ve.getId());
|
||||||
|
menu.setVascGroupId(ve.getVascGroupId());
|
||||||
|
menu.setTitleKey(ve.getName());
|
||||||
|
result.add(menu);
|
||||||
|
}
|
||||||
|
// Collections.sort(result,vascMenuComparator);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,109 +33,43 @@ import java.io.Serializable;
|
||||||
public class VascMenu implements Serializable {
|
public class VascMenu implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 5087600835051760512L;
|
private static final long serialVersionUID = 5087600835051760512L;
|
||||||
private Integer id = null;
|
|
||||||
private String vascEntryId = null;
|
private String vascEntryId = null;
|
||||||
private String title = null;
|
private String titleKey = null;
|
||||||
private Boolean active = null;
|
private String vascGroupId = null;
|
||||||
private String roles = null;
|
|
||||||
private Integer menuOrder = null;
|
|
||||||
private String menuGroup = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the id
|
|
||||||
*/
|
|
||||||
public Integer getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param id the id to set
|
|
||||||
*/
|
|
||||||
public void setId(Integer id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the vascEntryId
|
* @return the vascEntryId
|
||||||
*/
|
*/
|
||||||
public String getVascEntryId() {
|
public String getVascEntryId() {
|
||||||
return vascEntryId;
|
return vascEntryId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param vascEntryId the vascEntryId to set
|
* @param vascEntryId the vascEntryId to set
|
||||||
*/
|
*/
|
||||||
public void setVascEntryId(String vascEntryId) {
|
public void setVascEntryId(String vascEntryId) {
|
||||||
this.vascEntryId = vascEntryId;
|
this.vascEntryId = vascEntryId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the title
|
* @return the titleKey
|
||||||
*/
|
*/
|
||||||
public String getTitle() {
|
public String getTitleKey() {
|
||||||
return title;
|
return titleKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param title the title to set
|
* @param titleKey the titleKey to set
|
||||||
*/
|
*/
|
||||||
public void setTitle(String title) {
|
public void setTitleKey(String titleKey) {
|
||||||
this.title = title;
|
this.titleKey = titleKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the active
|
* @return the vascGroupId
|
||||||
*/
|
*/
|
||||||
public Boolean getActive() {
|
public String getVascGroupId() {
|
||||||
return active;
|
return vascGroupId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param active the active to set
|
* @param vascGroupId the vascGroupId to set
|
||||||
*/
|
*/
|
||||||
public void setActive(Boolean active) {
|
public void setVascGroupId(String vascGroupId) {
|
||||||
this.active = active;
|
this.vascGroupId = vascGroupId;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the roles
|
|
||||||
*/
|
|
||||||
public String getRoles() {
|
|
||||||
return roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param roles the roles to set
|
|
||||||
*/
|
|
||||||
public void setRoles(String roles) {
|
|
||||||
this.roles = roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the menuOrder
|
|
||||||
*/
|
|
||||||
public Integer getMenuOrder() {
|
|
||||||
return menuOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param menuOrder the menuOrder to set
|
|
||||||
*/
|
|
||||||
public void setMenuOrder(Integer menuOrder) {
|
|
||||||
this.menuOrder = menuOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the menuGroup
|
|
||||||
*/
|
|
||||||
public String getMenuGroup() {
|
|
||||||
return menuGroup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param menuGroup the menuGroup to set
|
|
||||||
*/
|
|
||||||
public void setMenuGroup(String menuGroup) {
|
|
||||||
this.menuGroup = menuGroup;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,10 +35,7 @@ public class VascMenuGroup implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -9154803561816570868L;
|
private static final long serialVersionUID = -9154803561816570868L;
|
||||||
private String id = null;
|
private String id = null;
|
||||||
private String title = null;
|
private String titleKey = null;
|
||||||
private Boolean active = null;
|
|
||||||
private String roles = null;
|
|
||||||
private Integer menuOrder = null;
|
|
||||||
private List<VascMenu> menus = null;
|
private List<VascMenu> menus = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,61 +51,19 @@ public class VascMenuGroup implements Serializable {
|
||||||
public void setId(String id) {
|
public void setId(String id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the titleKey
|
||||||
|
*/
|
||||||
|
public String getTitleKey() {
|
||||||
|
return titleKey;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the title
|
* @param titleKey the titleKey to set
|
||||||
*/
|
*/
|
||||||
public String getTitle() {
|
public void setTitleKey(String titleKey) {
|
||||||
return title;
|
this.titleKey = titleKey;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param title the title to set
|
|
||||||
*/
|
|
||||||
public void setTitle(String title) {
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the active
|
|
||||||
*/
|
|
||||||
public Boolean getActive() {
|
|
||||||
return active;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param active the active to set
|
|
||||||
*/
|
|
||||||
public void setActive(Boolean active) {
|
|
||||||
this.active = active;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the roles
|
|
||||||
*/
|
|
||||||
public String getRoles() {
|
|
||||||
return roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param roles the roles to set
|
|
||||||
*/
|
|
||||||
public void setRoles(String roles) {
|
|
||||||
this.roles = roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the menuOrder
|
|
||||||
*/
|
|
||||||
public Integer getMenuOrder() {
|
|
||||||
return menuOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param menuOrder the menuOrder to set
|
|
||||||
*/
|
|
||||||
public void setMenuOrder(Integer menuOrder) {
|
|
||||||
this.menuOrder = menuOrder;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package net.forwardfire.vasc.demo.tech.ejb3.user;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public interface ClientUserController {
|
||||||
|
|
||||||
|
String doClientLogin();
|
||||||
|
|
||||||
|
Map<String,String> getResourceBundle(Locale locale);
|
||||||
|
|
||||||
|
List<Locale> getResourceBundleLocales();
|
||||||
|
|
||||||
|
/*
|
||||||
|
void doClientLogout();
|
||||||
|
|
||||||
|
User getUser() throws Exception;
|
||||||
|
|
||||||
|
List<RightRole> getClientRoles() throws Exception;
|
||||||
|
*/
|
||||||
|
}
|
|
@ -1,12 +1,19 @@
|
||||||
package net.forwardfire.vasc.demo.tech.ejb3.user;
|
package net.forwardfire.vasc.demo.tech.ejb3.user;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.annotation.security.RolesAllowed;
|
import javax.annotation.security.RolesAllowed;
|
||||||
import javax.ejb.SessionContext;
|
import javax.ejb.SessionContext;
|
||||||
import javax.ejb.Stateless;
|
import javax.ejb.Stateless;
|
||||||
|
|
||||||
@Stateless(name="loginUserController")
|
import net.forwardfire.vasc.lib.i18n.bundle.RootApplicationBundle;
|
||||||
public class LoginUserControllerImpl implements LoginUserControllerLocal,LoginUserControllerRemote {
|
|
||||||
|
@Stateless(name="clientUserController")
|
||||||
|
public class ClientUserControllerImpl implements ClientUserControllerLocal,ClientUserControllerRemote {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SessionContext session;
|
private SessionContext session;
|
||||||
|
@ -54,4 +61,22 @@ public class LoginUserControllerImpl implements LoginUserControllerLocal,LoginUs
|
||||||
return u.getUsername();
|
return u.getUsername();
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String,String> getResourceBundle(Locale locale) {
|
||||||
|
ResourceBundle bundle = ResourceBundle.getBundle(RootApplicationBundle.class.getName(), locale);
|
||||||
|
if (bundle instanceof RootApplicationBundle) {
|
||||||
|
RootApplicationBundle appBundle = (RootApplicationBundle)bundle;
|
||||||
|
return appBundle.getBundleData();
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("Loaded bundle: "+bundle+" is not RootApplicationBundle.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Locale> getResourceBundleLocales() {
|
||||||
|
ResourceBundle bundle = ResourceBundle.getBundle(RootApplicationBundle.class.getName());
|
||||||
|
if (bundle instanceof RootApplicationBundle) {
|
||||||
|
RootApplicationBundle appBundle = (RootApplicationBundle)bundle;
|
||||||
|
return appBundle.getApplicationSupportedLocales();
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("Loaded bundle: "+bundle+" is not RootApplicationBundle.");
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -3,6 +3,6 @@ package net.forwardfire.vasc.demo.tech.ejb3.user;
|
||||||
import javax.ejb.Local;
|
import javax.ejb.Local;
|
||||||
|
|
||||||
@Local
|
@Local
|
||||||
public interface LoginUserControllerLocal extends LoginUserController {
|
public interface ClientUserControllerLocal extends ClientUserController {
|
||||||
|
|
||||||
}
|
}
|
|
@ -3,6 +3,6 @@ package net.forwardfire.vasc.demo.tech.ejb3.user;
|
||||||
import javax.ejb.Remote;
|
import javax.ejb.Remote;
|
||||||
|
|
||||||
@Remote
|
@Remote
|
||||||
public interface LoginUserControllerRemote extends LoginUserController {
|
public interface ClientUserControllerRemote extends ClientUserController {
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,21 +0,0 @@
|
||||||
package net.forwardfire.vasc.demo.tech.ejb3.user;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.ejb.Local;
|
|
||||||
import javax.ejb.Remote;
|
|
||||||
|
|
||||||
|
|
||||||
public interface LoginUserController {
|
|
||||||
|
|
||||||
public String doClientLogin();
|
|
||||||
|
|
||||||
/*
|
|
||||||
public void doClientLogout();
|
|
||||||
|
|
||||||
public User getUser() throws Exception;
|
|
||||||
|
|
||||||
public List<RightRole> getClientRoles() throws Exception;
|
|
||||||
*/
|
|
||||||
}
|
|
|
@ -39,21 +39,7 @@
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--
|
<dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>net.forwardfire.vasc</groupId>
|
|
||||||
<artifactId>vasc-xpql-ejb3-server</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.forwardfire.vasc</groupId>
|
|
||||||
<artifactId>vasc-core-ejb3-server</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
-->
|
|
||||||
<dependency>
|
|
||||||
<groupId>javax</groupId>
|
<groupId>javax</groupId>
|
||||||
<artifactId>javaee-api</artifactId>
|
<artifactId>javaee-api</artifactId>
|
||||||
<version>${javaee-api.version}</version>
|
<version>${javaee-api.version}</version>
|
||||||
|
|
|
@ -32,7 +32,7 @@ import javax.naming.Context;
|
||||||
import javax.naming.InitialContext;
|
import javax.naming.InitialContext;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import net.forwardfire.vasc.demo.tech.ejb3.user.LoginUserController;
|
import net.forwardfire.vasc.demo.tech.ejb3.user.ClientUserController;
|
||||||
import net.forwardfire.vasc.demo.tech.web.models.WebUser;
|
import net.forwardfire.vasc.demo.tech.web.models.WebUser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -12,10 +12,10 @@
|
||||||
<transaction-type>Container</transaction-type>
|
<transaction-type>Container</transaction-type>
|
||||||
</session>
|
</session>
|
||||||
<session>
|
<session>
|
||||||
<ejb-name>loginUserController</ejb-name>
|
<ejb-name>clientUserController</ejb-name>
|
||||||
<business-local>net.forwardfire.vasc.demo.tech.ejb3.user.LoginUserControllerLocal</business-local>
|
<business-local>net.forwardfire.vasc.demo.tech.ejb3.user.ClientUserControllerLocal</business-local>
|
||||||
<business-remote>net.forwardfire.vasc.demo.tech.ejb3.user.LoginUserControllerRemote</business-remote>
|
<business-remote>net.forwardfire.vasc.demo.tech.ejb3.user.ClientUserControllerRemote</business-remote>
|
||||||
<ejb-class>net.forwardfire.vasc.demo.tech.ejb3.user.LoginUserControllerImpl</ejb-class>
|
<ejb-class>net.forwardfire.vasc.demo.tech.ejb3.user.ClientUserControllerImpl</ejb-class>
|
||||||
<session-type>Stateless</session-type>
|
<session-type>Stateless</session-type>
|
||||||
<transaction-type>Container</transaction-type>
|
<transaction-type>Container</transaction-type>
|
||||||
</session>
|
</session>
|
||||||
|
|
|
@ -8,11 +8,11 @@
|
||||||
<ui:repeat var="menuGroup" value="#{menuController.vascMenuGroup}">
|
<ui:repeat var="menuGroup" value="#{menuController.vascMenuGroup}">
|
||||||
<div id="body-deco-menu-group">
|
<div id="body-deco-menu-group">
|
||||||
<h4>
|
<h4>
|
||||||
<span><h:outputText value="#{menuGroup.title}"/></span>
|
<span><h:outputText value="#{i18n[menuGroup.titleKey]}"/></span>
|
||||||
</h4>
|
</h4>
|
||||||
<ul>
|
<ul>
|
||||||
<ui:repeat var="menu" value="#{menuGroup.menus}">
|
<ui:repeat var="menu" value="#{menuGroup.menus}">
|
||||||
<li><a href="#{contextPathController.rootPath}/vasc/#{menu.vascEntryId}/list,jsf" title="#{menu.title}">#{menu.title}</a></li>
|
<li><a href="#{contextPathController.rootPath}/vasc/#{menu.vascEntryId}/list,jsf" title="#{i18n[menu.titleKey]}">#{i18n[menu.titleKey]}</a></li>
|
||||||
</ui:repeat>
|
</ui:repeat>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -22,38 +22,25 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.frontend.web.jsf;
|
package net.forwardfire.vasc.frontend.web.jsf;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.ObjectOutputStream;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import javax.faces.context.FacesContext;
|
|
||||||
import javax.naming.Context;
|
import javax.naming.Context;
|
||||||
import javax.naming.InitialContext;
|
import javax.naming.InitialContext;
|
||||||
|
|
||||||
import net.forwardfire.vasc.backend.VascBackend;
|
import net.forwardfire.vasc.backend.VascBackend;
|
||||||
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
import net.forwardfire.vasc.backend.VascBackendControllerLocal;
|
||||||
import net.forwardfire.vasc.backend.VascBackendState;
|
|
||||||
import net.forwardfire.vasc.backend.proxy.VascBackendProxyEventExecutor;
|
import net.forwardfire.vasc.backend.proxy.VascBackendProxyEventExecutor;
|
||||||
import net.forwardfire.vasc.core.VascController;
|
import net.forwardfire.vasc.core.VascController;
|
||||||
import net.forwardfire.vasc.core.VascEntry;
|
|
||||||
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
import net.forwardfire.vasc.core.VascEntryControllerLocal;
|
||||||
import net.forwardfire.vasc.core.VascEntryField;
|
|
||||||
import net.forwardfire.vasc.core.VascEntryLocal;
|
import net.forwardfire.vasc.core.VascEntryLocal;
|
||||||
import net.forwardfire.vasc.core.VascException;
|
|
||||||
import net.forwardfire.vasc.core.entry.VascEntryFieldValue;
|
|
||||||
import net.forwardfire.vasc.core.entry.VascEntryFrontendEventListener;
|
|
||||||
import net.forwardfire.vasc.core.entry.VascEntryRecordCreator;
|
|
||||||
import net.forwardfire.vasc.ejb3.VascServiceManager;
|
import net.forwardfire.vasc.ejb3.VascServiceManager;
|
||||||
import net.forwardfire.vasc.frontend.VascFrontendController;
|
import net.forwardfire.vasc.ejb3.VascServiceRemoteBackend;
|
||||||
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
import net.forwardfire.vasc.impl.DefaultVascFactory;
|
||||||
import net.forwardfire.vasc.impl.entry.DefaultVascEntryResourceResolver;
|
|
||||||
import net.forwardfire.vasc.impl.entry.SetParameterBackendListener;
|
import net.forwardfire.vasc.impl.entry.SetParameterBackendListener;
|
||||||
|
|
||||||
|
|
||||||
|
@ -166,174 +153,6 @@ abstract public class AbstractJSFVascFacesControllerEJB extends AbstractJSFVascF
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class RemoteVascBackend implements VascBackend {
|
|
||||||
|
|
||||||
private String backendId = null;
|
|
||||||
private VascServiceManager vascManager = null;
|
|
||||||
|
|
||||||
public RemoteVascBackend(String backendId,VascServiceManager vascManager) {
|
|
||||||
this.backendId=backendId;
|
|
||||||
this.vascManager=vascManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void startBackend() {
|
|
||||||
}
|
|
||||||
public void stopBackend() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(Object object) throws VascException {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=object;
|
|
||||||
vascManager.invokeBackendMethod(backendId, "delete", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public long doRecordMoveDownById(VascBackendState state,Object primaryId) throws VascException {
|
|
||||||
Object[] args = new Object[2];
|
|
||||||
args[0]=state;
|
|
||||||
args[1]=primaryId;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "doRecordMoveDownById", args);
|
|
||||||
return (Long)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long doRecordMoveUpById(VascBackendState state, Object primaryId) throws VascException {
|
|
||||||
Object[] args = new Object[2];
|
|
||||||
args[0]=state;
|
|
||||||
args[1]=primaryId;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "doRecordMoveUpById", args);
|
|
||||||
return (Long)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public List<Object> execute(VascBackendState state) throws VascException {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=state;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "execute", args);
|
|
||||||
return (List<Object>)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long fetchTotalExecuteSize(VascBackendState state) {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=state;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "fetchTotalExecuteSize", args);
|
|
||||||
return (Long)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return backendId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPageable() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isPageable", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isRecordMoveable() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isRecordMoveable", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSearchable() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isSearchable", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSortable() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isSortable", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object merge(Object object) throws VascException {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=object;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "merge", args);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void persist(Object object) throws VascException {
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=object;
|
|
||||||
vascManager.invokeBackendMethod(backendId, "delete", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public VascEntryFieldValue provideVascEntryFieldValue(VascEntryField field) {
|
|
||||||
/*
|
|
||||||
try {
|
|
||||||
ByteArrayOutputStream dataArray = new ByteArrayOutputStream(256); // it grows when needed
|
|
||||||
ObjectOutputStream objOutstream = new ObjectOutputStream(dataArray);
|
|
||||||
objOutstream.writeObject(field);
|
|
||||||
objOutstream.close();
|
|
||||||
int objectSize = dataArray.size();
|
|
||||||
System.out.println("Writing obj to field: "+objectSize);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=field;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "provideVascEntryFieldValue", args);
|
|
||||||
return (VascEntryFieldValue)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public VascEntryRecordCreator provideVascEntryRecordCreator(VascEntry vascEntry) {
|
|
||||||
VascEntryLocal clone = null;
|
|
||||||
try {
|
|
||||||
clone = ((VascEntryLocal)vascEntry).clone();
|
|
||||||
clone.setVascFrontendController(null);
|
|
||||||
clone.setVascEntryFieldEventChannel(null);
|
|
||||||
} catch (CloneNotSupportedException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
ByteArrayOutputStream dataArray = new ByteArrayOutputStream(256); // it grows when needed
|
|
||||||
ObjectOutputStream objOutstream = new ObjectOutputStream(dataArray);
|
|
||||||
objOutstream.writeObject(clone);
|
|
||||||
objOutstream.close();
|
|
||||||
//int objectSize = dataArray.size();
|
|
||||||
//System.out.println("Writing obj to entry: "+objectSize);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
Object[] args = new Object[1];
|
|
||||||
args[0]=clone;
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "provideVascEntryRecordCreator", args);
|
|
||||||
return (VascEntryRecordCreator)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
// we cant change id
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Object> executePageSummary() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Object> executeTotalSummary() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPageSummary() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isPageSummary", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isTotalSummary() {
|
|
||||||
Object[] args = new Object[0];
|
|
||||||
Object result = vascManager.invokeBackendMethod(backendId, "isTotalSummary", args);
|
|
||||||
return (Boolean)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isReadOnly() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the vascController
|
* @return the vascController
|
||||||
|
@ -370,7 +189,7 @@ abstract public class AbstractJSFVascFacesControllerEJB extends AbstractJSFVascF
|
||||||
for (String id:entryIds) {
|
for (String id:entryIds) {
|
||||||
VascEntryLocal ve = (VascEntryLocal)vascManager.getVascEntry(id);
|
VascEntryLocal ve = (VascEntryLocal)vascManager.getVascEntry(id);
|
||||||
String backendId = ve.getBackendId();
|
String backendId = ve.getBackendId();
|
||||||
VascBackend vb = new RemoteVascBackend(backendId,vascManager);
|
VascBackend vb = new VascServiceRemoteBackend(vascManager,backendId);
|
||||||
|
|
||||||
for (String key:ve.getEntryParameterKeys()) {
|
for (String key:ve.getEntryParameterKeys()) {
|
||||||
Object value = ve.getEntryParameter(key);
|
Object value = ve.getEntryParameter(key);
|
||||||
|
|
|
@ -59,6 +59,15 @@ public class MergeableResourceBundle extends ResourceBundle {
|
||||||
bundleData.clear();
|
bundleData.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns copy of data of this loaded merged bundle.
|
||||||
|
*/
|
||||||
|
public Map<String,String> getBundleData() {
|
||||||
|
Map<String,String> result = new HashMap<String,String>(bundleData.size());
|
||||||
|
result.putAll(bundleData);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see java.util.ResourceBundle#handleGetObject(java.lang.String)
|
* @see java.util.ResourceBundle#handleGetObject(java.lang.String)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_by extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_by extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_da extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_da extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_de extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_de extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_en extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_en extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_es extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_es extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_fr extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_fr extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_it extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_it extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_nl extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_nl extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_pl extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_pl extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_pt extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_pt extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
package net.forwardfire.vasc.lib.i18n.bundle;
|
package net.forwardfire.vasc.lib.i18n.bundle;
|
||||||
|
|
||||||
import net.forwardfire.vasc.lib.i18n.AbstractRootApplicationBundle;
|
|
||||||
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ import net.forwardfire.vasc.lib.i18n.SupportedBundleLocale;
|
||||||
* @author Willem Cazander
|
* @author Willem Cazander
|
||||||
* @version 1.0 Mar 8, 2012
|
* @version 1.0 Mar 8, 2012
|
||||||
*/
|
*/
|
||||||
public class RootApplicationBundle_ro extends AbstractRootApplicationBundle {
|
public class RootApplicationBundle_ro extends RootApplicationBundle {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SupportedBundleLocale getSupportedBundleLocale() {
|
public SupportedBundleLocale getSupportedBundleLocale() {
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue