Upgraded to NX01 maisdoc mm with new meta model with junk json support
This commit is contained in:
parent
c4bf31561f
commit
0bee837b52
|
@ -16,8 +16,13 @@
|
|||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mariadb.jdbc</groupId>
|
||||
<artifactId>mariadb-java-client</artifactId>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
@ -31,7 +31,7 @@ import java.io.File;
|
|||
import java.util.Map.Entry;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.eobjects.metamodel.DataContext;
|
||||
import org.apache.metamodel.DataContext;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
|
|
|
@ -31,11 +31,11 @@ import java.io.File;
|
|||
import java.sql.DriverManager;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import org.eobjects.metamodel.csv.CsvDataContext;
|
||||
import org.apache.metamodel.csv.CsvDataContext;
|
||||
import org.eobjects.metamodel.doc.DocModelDataStore;
|
||||
import org.eobjects.metamodel.doc.DocModelWriter;
|
||||
import org.eobjects.metamodel.jdbc.JdbcDataContext;
|
||||
import org.eobjects.metamodel.xml.XmlDomDataContext;
|
||||
import org.apache.metamodel.jdbc.JdbcDataContext;
|
||||
import org.apache.metamodel.xml.XmlDomDataContext;
|
||||
|
||||
public class MMDocManager {
|
||||
|
||||
|
|
|
@ -1,87 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import org.eobjects.metamodel.DataContext;
|
||||
import org.eobjects.metamodel.jdbc.JdbcDataContext;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class DocModelDataStore {
|
||||
|
||||
private Map<String,DataContext> dataContexts = null;
|
||||
|
||||
public DocModelDataStore() {
|
||||
dataContexts = new TreeMap<String,DataContext>();
|
||||
}
|
||||
|
||||
public void addDataContext(String id,DataContext dataContext) {
|
||||
dataContexts.put(id,dataContext);
|
||||
}
|
||||
|
||||
public void removeDataContext(String id) {
|
||||
dataContexts.remove(id);
|
||||
}
|
||||
|
||||
public Set<Entry<String,DataContext>> entrySet() {
|
||||
return dataContexts.entrySet();
|
||||
}
|
||||
|
||||
public List<DataContext> getDataContexts() {
|
||||
return new ArrayList<DataContext>(dataContexts.values()); // are ordered on id.
|
||||
}
|
||||
|
||||
public String getDataContextKey(DataContext dc) {
|
||||
for (Entry<String,DataContext> entry:entrySet()) {
|
||||
if (entry.getValue().equals(dc)) {
|
||||
return entry.getKey();
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("Could not find key for data context: "+dc.toString());
|
||||
}
|
||||
|
||||
public void clearAndCloseAllSafe() {
|
||||
for (DataContext dc:dataContexts.values()) {
|
||||
if (dc instanceof JdbcDataContext) { // TODO: only support jdbc, MM need 'DataContextLifeCycle extends DataContext'
|
||||
try {
|
||||
((JdbcDataContext)dc).getConnection().close();
|
||||
} catch (SQLException e) { // swallow exception is 'Safe' postfix.
|
||||
// TODO: logger.warn
|
||||
}
|
||||
}
|
||||
}
|
||||
dataContexts.clear();
|
||||
}
|
||||
}
|
|
@ -1,199 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.eobjects.metamodel.DataContext;
|
||||
import org.eobjects.metamodel.schema.Column;
|
||||
import org.eobjects.metamodel.schema.Relationship;
|
||||
import org.eobjects.metamodel.schema.Schema;
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
import org.x4o.o2o.tdoc.ApiDocGenerator;
|
||||
import org.x4o.o2o.tdoc.DefaultPageWriterHelp;
|
||||
import org.x4o.o2o.tdoc.DefaultPageWriterIndexAll;
|
||||
import org.x4o.o2o.tdoc.DefaultPageWriterTree;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDoc;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocConcept;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocNode;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class DocModelWriter {
|
||||
|
||||
private static final String[] C_DATA_STORE = {"data-store","Overview","All data stores.","The data stores of user defines resources."};
|
||||
private static final String[] C_DATA_CONTEXT = {"data-context","DataContext","The MetaModel DataContext.","The MetaModel DataContext provides the meta schema definitions."};
|
||||
private static final String[] C_SCHEMA = {"schema","Schema","The schema.","The schema hold the tables and other data types."};
|
||||
private static final String[] C_TABLE = {"table","Table","The Data Table.","The table has columns so can hold row/column data."};
|
||||
//private static final String[] C_VIEW = {"view","Table","The Data Table.","The table has columns so can hold row/column data."};
|
||||
|
||||
private static final String[] CC_RS = {"relationship","Relationship","The relationships.","The telationships data."};
|
||||
|
||||
private ApiDocGenerator writer = null;
|
||||
private ApiDoc doc = null;
|
||||
|
||||
public DocModelWriter(DocModelDataStore dmds) {
|
||||
if (dmds==null) {
|
||||
throw new NullPointerException("Can't write null "+DocModelDataStore.class.getSimpleName());
|
||||
}
|
||||
doc = buildApiDoc(dmds);
|
||||
writer = new ApiDocGenerator();
|
||||
}
|
||||
|
||||
public ApiDoc getApiDoc() {
|
||||
return doc;
|
||||
}
|
||||
|
||||
public void writeModelDoc(File basePath) throws IOException, SAXException {
|
||||
doc.checkModel();
|
||||
writer.write(doc,basePath);
|
||||
}
|
||||
|
||||
private ApiDoc buildApiDoc(DocModelDataStore dmds) {
|
||||
ApiDoc doc = new ApiDoc();
|
||||
doc.setName("MetaModel");
|
||||
doc.setDescription("MetaModel generic schema overview.");
|
||||
doc.setDocAbout("MetaModel of\nDataContexts");
|
||||
doc.createDocCopyright(System.getProperty("user.name"));
|
||||
doc.setDocPageSubTitle("MMDB 1.0 API");
|
||||
doc.addMetaKeywordAll(createLanguageKeywords());
|
||||
doc.setNoFrameAllName("All Schemas");
|
||||
doc.setFrameNavOverviewPrintParent(true);
|
||||
doc.setFrameNavPrintParent(true);
|
||||
doc.setFrameNavPrintParentParent(true);
|
||||
doc.setGroupTypeName("summary", "Summary",1);
|
||||
doc.setGroupTypeName("overview", "Overview",2);
|
||||
|
||||
//doc.addRemoteClass(new ApiDocRemoteClass("file:///home/willemc/devv/git/x4o/x4o-driver/target/apidocs"));
|
||||
//doc.addRemoteClass(new ApiDocRemoteClass("http://docs.oracle.com/javase/7/docs/api/"));
|
||||
|
||||
doc.addTreeNodeClassExclude(Relationship.class);
|
||||
|
||||
doc.setFrameNavConceptClass(Table.class);
|
||||
|
||||
doc.addTreeNodePageModeClass(DocModelDataStore.class);
|
||||
doc.addTreeNodePageModeClass(DataContext.class);
|
||||
doc.addTreeNodePageModeClass(Schema.class);
|
||||
|
||||
doc.addAnnotatedClasses(DocModelWriterSchema.class);
|
||||
doc.addAnnotatedClasses(DocModelWriterTable.class);
|
||||
|
||||
ApiDocConcept adc1 = doc.addConcept(new ApiDocConcept(null,C_DATA_STORE,DocModelDataStore.class));
|
||||
ApiDocConcept adc2 = doc.addConcept(new ApiDocConcept(adc1,C_DATA_CONTEXT,DataContext.class));
|
||||
ApiDocConcept adc3 = doc.addConcept(new ApiDocConcept(adc2,C_SCHEMA,Schema.class));
|
||||
ApiDocConcept adc4 = doc.addConcept(new ApiDocConcept(adc3,C_TABLE,Table.class));
|
||||
|
||||
adc4.addChildConcepts(new ApiDocConcept(adc4, CC_RS, Relationship.class));
|
||||
|
||||
doc.addDocPage(DefaultPageWriterTree.createDocPage());
|
||||
doc.addDocPage(DefaultPageWriterIndexAll.createDocPage());
|
||||
doc.addDocPage(DefaultPageWriterHelp.createDocPage());
|
||||
|
||||
ApiDocNode rootNode = new ApiDocNode(dmds,"data-store","DataStore","All schemas from all data contexts.");
|
||||
doc.setRootNode(rootNode);
|
||||
for (Entry<String,DataContext> entry:dmds.entrySet()) {
|
||||
ApiDocNode dcNode = rootNode.addNode(createNodeDataContext(entry));
|
||||
for (Schema schema:entry.getValue().getSchemas()) {;
|
||||
if (isInvalidDocSchema(schema)) {
|
||||
continue;
|
||||
}
|
||||
ApiDocNode schemaNode = dcNode.addNode(createNodeSchema(schema));
|
||||
for (Table table:schema.getTables()) {
|
||||
schemaNode.addNode(createNodeTable(table));
|
||||
}
|
||||
for (Relationship rs:schema.getRelationships()) {
|
||||
schemaNode.addNode(createNodeRelationship(rs));
|
||||
}
|
||||
}
|
||||
}
|
||||
return doc;
|
||||
}
|
||||
|
||||
private boolean isInvalidDocSchema(Schema schema) {
|
||||
if (schema.getName().toLowerCase().startsWith("information_schema")) {
|
||||
return true;
|
||||
}
|
||||
if (schema.getName().toLowerCase().equals("sys") || schema.getName().toLowerCase().equals("dbo") ) {
|
||||
return true;
|
||||
}
|
||||
if (schema.getTableCount()==0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private ApiDocNode createNodeDataContext(Entry<String,DataContext> entry) {
|
||||
return new ApiDocNode(entry.getValue(),entry.getKey(),entry.getKey(),entry.getKey());
|
||||
}
|
||||
private ApiDocNode createNodeSchema(Schema schema) {
|
||||
return new ApiDocNode(schema,schema.getName(),schema.getQualifiedLabel(),schema.getName());
|
||||
}
|
||||
private ApiDocNode createNodeTable(Table table) {
|
||||
return new ApiDocNode(table,table.getName(),table.getQualifiedLabel(),table.getRemarks());
|
||||
}
|
||||
private ApiDocNode createNodeRelationship(Relationship rs) {
|
||||
String name = rsName(rs);
|
||||
return new ApiDocNode(rs,name,name,name);
|
||||
}
|
||||
|
||||
private String rsName(Relationship rs) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
buf.append(rs.getPrimaryTable().getName());
|
||||
buf.append('_');
|
||||
for (Column c:rs.getPrimaryColumns()) {
|
||||
buf.append(c.getName());
|
||||
buf.append('_');
|
||||
}
|
||||
buf.append(rs.getForeignTable().getName());
|
||||
buf.append('_');
|
||||
for (Column c:rs.getForeignColumns()) {
|
||||
buf.append(c.getName());
|
||||
buf.append('_');
|
||||
}
|
||||
buf.append("RS");
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
private List<String> createLanguageKeywords() {
|
||||
List<String> keywords = new ArrayList<String>(10);
|
||||
keywords.add("eobjects");
|
||||
keywords.add("metamodel");
|
||||
keywords.add("meta-model");
|
||||
keywords.add("schema");
|
||||
keywords.add("schema-model");
|
||||
keywords.add("database");
|
||||
keywords.add("database-model");
|
||||
keywords.add("documentation");
|
||||
keywords.add("javadoc");
|
||||
keywords.add("x4o");
|
||||
return keywords;
|
||||
}
|
||||
}
|
|
@ -1,104 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eobjects.metamodel.DataContext;
|
||||
import org.eobjects.metamodel.data.DataSet;
|
||||
import org.eobjects.metamodel.query.FunctionType;
|
||||
import org.eobjects.metamodel.schema.Schema;
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
import org.eobjects.metamodel.schema.TableType;
|
||||
import org.x4o.o2o.tdoc.ApiDocContentCss;
|
||||
import org.x4o.o2o.tdoc.ApiDocContentWriter;
|
||||
import org.x4o.o2o.tdoc.ApiDocNodeWriterMethod;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocNode;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocNodeBody;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocWriteEvent;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class DocModelWriterSchema {
|
||||
|
||||
private List<Table> filterTables(Schema schema,TableType tableType,boolean addEquals) {
|
||||
List<Table> result = new ArrayList<Table>();
|
||||
for (Table table:schema.getTables()) {
|
||||
if (addEquals==tableType.equals(table.getType())) {
|
||||
result.add(table);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.SUMMARY,targetClasses={Schema.class})
|
||||
public void writeSchemaTableSummary(ApiDocWriteEvent<ApiDocNode> event) throws SAXException, IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
Schema schema = (Schema)event.getEventObject().getUserData();
|
||||
DataContext dc = (DataContext)event.getEventObject().getParent().getUserData();
|
||||
List<Table> tables = filterTables(schema,TableType.VIEW,false);
|
||||
if (tables.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
writer.docTableStart("Table Summary", "All tables in the schema.",ApiDocContentCss.overviewSummary);
|
||||
writer.docTableHeader("Name", "Description");
|
||||
for (Table table:tables) {
|
||||
Number tableCount = 0l;
|
||||
if (table.getColumnCount()>0) {
|
||||
DataSet ds = dc.query().from(table).select(FunctionType.COUNT, table.getColumns()[0]).execute();
|
||||
ds.next();
|
||||
tableCount = (Number)ds.getRow().getValue(0);
|
||||
ds.close();
|
||||
}
|
||||
String link = ApiDocContentWriter.toSafeUri(table.getName())+"/index.html";
|
||||
writer.docTableRowLink(link,table.getName(),"Record Count: "+tableCount);
|
||||
}
|
||||
writer.docTableEnd();
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.SUMMARY,targetClasses={Schema.class})
|
||||
public void writeSchemaViewSummary(ApiDocWriteEvent<ApiDocNode> event) throws SAXException, IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
Schema schema = (Schema)event.getEventObject().getUserData();
|
||||
List<Table> tables = filterTables(schema,TableType.VIEW,true);
|
||||
if (tables.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
writer.docTableStart("View Summary", "All views in the schema.",ApiDocContentCss.overviewSummary);
|
||||
writer.docTableHeader("Name", "Description");
|
||||
for (Table table:schema.getTables()) {
|
||||
if (!TableType.VIEW.equals(table.getType())) {
|
||||
continue;
|
||||
}
|
||||
String link = ApiDocContentWriter.toSafeUri(table.getName())+"/index.html";
|
||||
writer.docTableRowLink(link,table.getName(),table.getQualifiedLabel());
|
||||
}
|
||||
writer.docTableEnd();
|
||||
}
|
||||
}
|
|
@ -1,439 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eobjects.metamodel.DataContext;
|
||||
import org.eobjects.metamodel.doc.jdbc.DBIndex;
|
||||
import org.eobjects.metamodel.doc.jdbc.DBIndexColumn;
|
||||
import org.eobjects.metamodel.doc.jdbc.DBTable;
|
||||
import org.eobjects.metamodel.doc.jdbc.DBTableFactory;
|
||||
import org.eobjects.metamodel.jdbc.JdbcDataContext;
|
||||
import org.eobjects.metamodel.schema.Column;
|
||||
import org.eobjects.metamodel.schema.Relationship;
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
import org.eobjects.metamodel.schema.TableType;
|
||||
import org.x4o.o2o.io.ContentWriterHtml.Tag;
|
||||
import org.x4o.o2o.tdoc.ApiDocContentCss;
|
||||
import org.x4o.o2o.tdoc.ApiDocContentWriter;
|
||||
import org.x4o.o2o.tdoc.ApiDocNodeWriterMethod;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocIndexItem;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocNode;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocNodeBody;
|
||||
import org.x4o.o2o.tdoc.dom.ApiDocWriteEvent;
|
||||
|
||||
public class DocModelWriterTable {
|
||||
|
||||
private DBTableFactory dbTableFactory;
|
||||
private DBTable currentDBTable;
|
||||
|
||||
public DocModelWriterTable() {
|
||||
dbTableFactory = new DBTableFactory();
|
||||
}
|
||||
|
||||
private DBTable getDBTable(ApiDocWriteEvent<ApiDocNode> event) {
|
||||
Table table = (Table)event.getEventObject().getUserData();
|
||||
if (currentDBTable!=null && currentDBTable.getTable().getQualifiedLabel().equals(table.getQualifiedLabel()))
|
||||
{
|
||||
return currentDBTable;
|
||||
}
|
||||
DataContext dcRaw = (DataContext)event.getEventObject().getParent().getParent().getUserData();
|
||||
if (dcRaw instanceof JdbcDataContext) {
|
||||
JdbcDataContext dc = (JdbcDataContext) dcRaw;
|
||||
try {
|
||||
currentDBTable = dbTableFactory.loadMetaTable(dc, table);
|
||||
return currentDBTable;
|
||||
} catch (SQLException e) {
|
||||
throw new IllegalStateException("Could not fetch meta table: "+e.getMessage(),e);
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private List<Relationship> rsFilter(Relationship[] rsa,Table table,boolean filterPrimary) {
|
||||
List<Relationship> result = new ArrayList<Relationship>(10);
|
||||
for (int i=0;i<rsa.length;i++) {
|
||||
Relationship rs = rsa[i];
|
||||
if (filterPrimary) {
|
||||
if (rs.getPrimaryTable().equals(table)) {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if (rs.getForeignTable().equals(table)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
result.add(rs);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.DESCRIPTION_LINKS,targetClasses={Table.class})
|
||||
public void writeTableDescription(ApiDocWriteEvent<ApiDocNode> event) throws IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
Table table = (Table)event.getEventObject().getUserData();
|
||||
|
||||
if (!TableType.VIEW.equals(table.getType())) {
|
||||
Iterator<Relationship> rsIn = rsFilter(table.getRelationships(),table,false).iterator();
|
||||
Iterator<Relationship> rsOut = rsFilter(table.getRelationships(),table,true).iterator();
|
||||
writer.printTagStart(Tag.dl);
|
||||
writer.printTagCharacters(Tag.dt,"All Incoming Relations:");
|
||||
writer.printTagStart(Tag.dd);
|
||||
if (!rsIn.hasNext()) {
|
||||
writer.printCharacters("Table is not referenced.");
|
||||
}
|
||||
while (rsIn.hasNext()) {
|
||||
Relationship rs = rsIn.next();
|
||||
String uri = "../../"+ApiDocContentWriter.toSafeUri(rs.getForeignTable().getSchema().getName())+"/"+ApiDocContentWriter.toSafeUri(rs.getForeignTable().getName())+"/index.html";
|
||||
writer.printHref(uri, rs.getForeignTable().getName());
|
||||
if (rsIn.hasNext()) {
|
||||
writer.printCharacters(", ");
|
||||
}
|
||||
}
|
||||
writer.printTagEnd(Tag.dd);
|
||||
writer.printTagEnd(Tag.dl);
|
||||
|
||||
writer.printTagStart(Tag.dl);
|
||||
writer.printTagCharacters(Tag.dt,"All Referenced Tables:");
|
||||
writer.printTagStart(Tag.dd);
|
||||
if (!rsOut.hasNext()) {
|
||||
writer.printCharacters("Table has no references.");
|
||||
}
|
||||
while (rsOut.hasNext()) {
|
||||
Relationship rs = rsOut.next();
|
||||
String uri = "../../"+ApiDocContentWriter.toSafeUri(rs.getPrimaryTable().getSchema().getName())+"/"+ApiDocContentWriter.toSafeUri(rs.getPrimaryTable().getName())+"/index.html";
|
||||
writer.printHref(uri, rs.getPrimaryTable().getName());
|
||||
if (rsOut.hasNext()) {
|
||||
writer.printCharacters(", ");
|
||||
}
|
||||
}
|
||||
writer.printTagEnd(Tag.dd);
|
||||
writer.printTagEnd(Tag.dl);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.DESCRIPTION_NODE,targetClasses={Table.class})
|
||||
public void writeTableSqlView(ApiDocWriteEvent<ApiDocNode> event) throws IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
Table table = (Table)event.getEventObject().getUserData();
|
||||
|
||||
// fixme or only normal
|
||||
if (!TableType.VIEW.equals(table.getType())) {
|
||||
event.getWriter().printCharacters(event.getEventObject().getDescription());
|
||||
} else {
|
||||
event.getWriter().printCharacters("View "+table.getQualifiedLabel());
|
||||
}
|
||||
|
||||
DBTable tableDB = getDBTable(event);
|
||||
if (tableDB!=null && tableDB.getSqlScript()!=null) {
|
||||
writeSqlBlock(writer,tableDB.getSqlScript());
|
||||
for (DBIndex index:tableDB.getIndexes()) {
|
||||
if (index.getSqlScript()!=null) {
|
||||
writeSqlBlock(writer,index.getSqlScript());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.SUMMARY,targetClasses={Table.class},nodeBodyOrders={3},contentGroup="Columns",contentGroupType="summary")
|
||||
public void writeTableSummary(ApiDocWriteEvent<ApiDocNode> event) throws IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
Table table = (Table)event.getEventObject().getUserData();
|
||||
if (TableType.VIEW.equals(table.getType())) {
|
||||
writer.docTableStart("Column Summary", "All column of the view.",null);
|
||||
} else {
|
||||
writer.docTableStart("Column Summary", "All column of the table.",null);
|
||||
}
|
||||
writer.docTableHeader("Name", "Description");
|
||||
for (Column column:table.getColumns()) {
|
||||
writer.docTableRowLink("#"+ApiDocContentWriter.toSafeUri(column.getName()),column.getName(),column.getQualifiedLabel());
|
||||
}
|
||||
writer.docTableEnd();
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.SUMMARY,targetClasses={Table.class},nodeBodyOrders={1},contentGroup="Primary Key",contentGroupType="summary")
|
||||
public void writeTablePKSummary(ApiDocWriteEvent<ApiDocNode> event) throws IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
Table table = (Table)event.getEventObject().getUserData();
|
||||
DBTable tableDB = getDBTable(event);
|
||||
if (tableDB==null) {
|
||||
writer.docPageBlockStart("Primary Key.","primary_key",null);
|
||||
writer.printTagStart(Tag.code);
|
||||
Column[] cols = table.getPrimaryKeys();
|
||||
for (int i=0;i<cols.length;i++) {
|
||||
Column column = cols[i];
|
||||
writer.printHref("#"+ApiDocContentWriter.toSafeUri(column.getName()), column.getName());
|
||||
if (i<cols.length-1) {
|
||||
writer.printCharacters(", ");
|
||||
}
|
||||
}
|
||||
if (cols.length==0) {
|
||||
writer.printCharacters("No primary key.");
|
||||
}
|
||||
writer.printTagEnd(Tag.code);
|
||||
writer.docPageBlockEnd();
|
||||
} else {
|
||||
List<String> cols = new ArrayList<String>(5);
|
||||
if (tableDB.getPrimaryKey()!=null) {
|
||||
cols.addAll(tableDB.getPrimaryKey().getColumnNames());
|
||||
writer.docPageBlockStart("Primary Key: "+tableDB.getPrimaryKey().getName(),"primary_key",null);
|
||||
} else {
|
||||
writer.docPageBlockStart("Primary Key: None","primary_key",null);
|
||||
}
|
||||
writer.printTagStart(Tag.code);
|
||||
|
||||
for (int i=0;i<cols.size();i++) {
|
||||
String column = cols.get(i);
|
||||
writer.printHref("#"+ApiDocContentWriter.toSafeUri(column), column);
|
||||
if (i<cols.size()-1) {
|
||||
writer.printCharacters(", ");
|
||||
}
|
||||
}
|
||||
if (cols.isEmpty()) {
|
||||
writer.printCharacters("No primary key.");
|
||||
}
|
||||
writer.printTagEnd(Tag.code);
|
||||
writer.docPageBlockEnd();
|
||||
}
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.SUMMARY,targetClasses={Table.class},nodeBodyOrders={2},contentGroup="Indexes",contentGroupType="summary")
|
||||
public void writeTableIDXSummary(ApiDocWriteEvent<ApiDocNode> event) throws IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
Table table = (Table)event.getEventObject().getUserData();
|
||||
DBTable tableDB = getDBTable(event);
|
||||
if (tableDB==null) {
|
||||
Column[] columns = table.getIndexedColumns();
|
||||
if (columns.length==0) {
|
||||
return;
|
||||
}
|
||||
writer.printHrefNamed("column_indexes");
|
||||
writer.printTagCharacters(Tag.h3, "Indexed Columns");
|
||||
writer.printTagStart(Tag.code);
|
||||
for (Column column:columns) {
|
||||
writer.printHref("#"+ApiDocContentWriter.toSafeUri(column.getName()), column.getName());
|
||||
}
|
||||
writer.printTagEnd(Tag.code);
|
||||
} else {
|
||||
writer.printHrefNamed("column_indexes");
|
||||
//writer.printTagCharacters(Tag.h3, "Indexes");
|
||||
writer.docTableStart("Column Indexes", "All indexes of the table.",null);
|
||||
writer.docTableHeader("Name", "Columns");
|
||||
for (DBIndex index:tableDB.getIndexes()) {
|
||||
StringBuilder buf = new StringBuilder(30);
|
||||
List<DBIndexColumn> cols = index.getIndexColumns();
|
||||
for (int i=0;i<cols.size();i++) {
|
||||
DBIndexColumn col = cols.get(i);
|
||||
buf.append(col.getColumn());
|
||||
if (i<cols.size()-1) {
|
||||
buf.append(",");
|
||||
}
|
||||
}
|
||||
writer.docTableRowLink("#"+ApiDocContentWriter.toSafeUri(index.getName()),index.getName(),buf.toString());
|
||||
}
|
||||
writer.docTableEnd();
|
||||
|
||||
//writer.printTagStart(Tag.code);
|
||||
//writer.printHref("#"+ApiDocContentWriter.toSafeUri(index.getName()), index.getName());
|
||||
//writer.printTagEnd(Tag.code);
|
||||
}
|
||||
}
|
||||
|
||||
private void writeSqlBlock(ApiDocContentWriter writer,String sql) throws IOException {
|
||||
writer.printTagStart(Tag.div,ApiDocContentCss.block);
|
||||
writer.printTagStart(Tag.pre);
|
||||
writer.printCharacters(sql);
|
||||
writer.printTagEnd(Tag.pre);
|
||||
writer.printTagEnd(Tag.div);
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.DETAIL,targetClasses={Table.class},nodeBodyOrders={1},contentGroup="Indexes",contentGroupType="overview")
|
||||
public void writeTableDetailIndex(ApiDocWriteEvent<ApiDocNode> event) throws IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
//Table table = (Table)event.getEventObject().getUserData();
|
||||
DBTable tableDB = getDBTable(event);
|
||||
if (tableDB==null) {
|
||||
return;
|
||||
}
|
||||
for (DBIndex index:tableDB.getIndexes()) {
|
||||
writer.printHrefNamed(index.getName());
|
||||
writer.docPageBlockStart();
|
||||
writer.printTagCharacters(Tag.h4, index.getName());
|
||||
|
||||
writer.printTagStart(Tag.pre);
|
||||
writer.printCharacters("INDEX ");
|
||||
writer.printCharacters(index.getSchema());
|
||||
writer.printCharacters(".");
|
||||
writer.printCharacters(index.getName());
|
||||
if (index.getUnique()!=null && index.getUnique()) {
|
||||
writer.printCharacters(" UNIQUE=true");
|
||||
}
|
||||
if (index.getIndexQualifier()!=null) {
|
||||
writer.printCharacters(" QUALIFIER=");
|
||||
writer.printCharacters(index.getIndexQualifier());
|
||||
}
|
||||
if (index.getCatalog()!=null) {
|
||||
writer.printCharacters(" CATELOG=");
|
||||
writer.printCharacters(index.getCatalog());
|
||||
}
|
||||
writer.printTagEnd(Tag.pre);
|
||||
|
||||
|
||||
writer.printTagStart(Tag.div,ApiDocContentCss.block);
|
||||
writer.printCharacters("Type: ");
|
||||
writer.printCharacters(index.getType().name());
|
||||
writer.printTagEnd(Tag.div);
|
||||
|
||||
if (index.getSqlScript()!=null) {
|
||||
writeSqlBlock(writer,index.getSqlScript());
|
||||
}
|
||||
|
||||
writer.printTagStart(Tag.dl);
|
||||
writer.printTagStart(Tag.dt);
|
||||
writer.printTagStart(Tag.span,ApiDocContentCss.strong);
|
||||
writer.printCharacters("Columns:");
|
||||
writer.printTagEnd(Tag.span);
|
||||
writer.printTagEnd(Tag.dt);
|
||||
for (DBIndexColumn column:index.getIndexColumns()) {
|
||||
writer.printTagStart(Tag.dd);
|
||||
writer.printTagStart(Tag.code);
|
||||
writer.printHref("#"+ApiDocContentWriter.toSafeUri(column.getColumn()), column.getColumn());
|
||||
writer.printTagEnd(Tag.code);
|
||||
writer.printCharacters(" ORDER ");
|
||||
if (column.getAscending()!=null && column.getAscending()) {
|
||||
writer.printCharacters("ASC");
|
||||
} else {
|
||||
writer.printCharacters("DESC");
|
||||
}
|
||||
writer.printTagEnd(Tag.dd);
|
||||
}
|
||||
writer.printTagEnd(Tag.dl);
|
||||
|
||||
writer.docPageBlockEnd();
|
||||
}
|
||||
}
|
||||
|
||||
@ApiDocNodeWriterMethod(nodeBody=ApiDocNodeBody.DETAIL,targetClasses={Table.class},nodeBodyOrders={2},contentGroup="Columns",contentGroupType="overview")
|
||||
public void writeTableDetail(ApiDocWriteEvent<ApiDocNode> event) throws IOException {
|
||||
ApiDocContentWriter writer = event.getWriter();
|
||||
Table table = (Table)event.getEventObject().getUserData();
|
||||
DBTable tableDB = getDBTable(event);
|
||||
for (Column column:table.getColumns()) {
|
||||
|
||||
ApiDocIndexItem indexItem = new ApiDocIndexItem();
|
||||
indexItem.setLinkText(column.getName());
|
||||
event.getDoc().getNodeData().addIndexItem(indexItem);
|
||||
|
||||
writer.printHrefNamed(column.getName());
|
||||
writer.docPageBlockStart();
|
||||
writer.printTagCharacters(Tag.h4, column.getName());
|
||||
|
||||
writer.printTagStart(Tag.pre);
|
||||
writer.printCharacters(column.getQualifiedLabel());
|
||||
writer.printCharacters(" ");
|
||||
if (column.getNativeType() != null) {
|
||||
writer.printCharacters(column.getNativeType().toUpperCase());
|
||||
}
|
||||
if (column.getColumnSize()!=null) {
|
||||
writer.printCharacters(" (");
|
||||
writer.printCharacters(""+column.getColumnSize());
|
||||
writer.printCharacters(")");
|
||||
}
|
||||
if (column.isNullable()) {
|
||||
writer.printCharacters(" NULL");
|
||||
} else {
|
||||
writer.printCharacters(" NOT NULL");
|
||||
}
|
||||
if (column.isPrimaryKey()) {
|
||||
writer.printCharacters(" PRIMARY KEY");
|
||||
}
|
||||
writer.printTagEnd(Tag.pre);
|
||||
|
||||
|
||||
writer.printTagStart(Tag.div,ApiDocContentCss.block);
|
||||
writer.printCharacters("Description: ");
|
||||
writer.printCharacters(column.getQuotedName());
|
||||
writer.printTagEnd(Tag.div);
|
||||
|
||||
writer.printTagStart(Tag.dl);
|
||||
if (column.isIndexed()) {
|
||||
List<DBIndex> idx = null;
|
||||
if (tableDB!=null) {
|
||||
idx = tableDB.getIndexesByColumn(column.getName());
|
||||
}
|
||||
writer.printTagStart(Tag.dt);
|
||||
writer.printTagStart(Tag.span,ApiDocContentCss.strong);
|
||||
writer.printCharacters("Indexes:");
|
||||
writer.printTagEnd(Tag.span);
|
||||
writer.printTagEnd(Tag.dt);
|
||||
|
||||
if (idx!=null) {
|
||||
writer.printTagStart(Tag.dd);
|
||||
writer.printTagStart(Tag.code);
|
||||
for (int i=0;i<idx.size();i++) {
|
||||
DBIndex index = idx.get(i);
|
||||
writer.printHref("#"+ApiDocContentWriter.toSafeUri(index.getName()), index.getName());
|
||||
if (i<idx.size()-1) {
|
||||
writer.printCharacters(",");
|
||||
}
|
||||
}
|
||||
writer.printTagEnd(Tag.code);
|
||||
writer.printTagEnd(Tag.dd);
|
||||
} else {
|
||||
writer.printTagStart(Tag.dd);
|
||||
writer.printTagStart(Tag.code);
|
||||
writer.printCharacters("Unknown");
|
||||
writer.printTagEnd(Tag.code);
|
||||
writer.printCharacters(" - This column is indexed.");
|
||||
writer.printTagEnd(Tag.dd);
|
||||
}
|
||||
}
|
||||
|
||||
writer.printTagStart(Tag.dt);
|
||||
writer.printTagStart(Tag.span,ApiDocContentCss.strong);
|
||||
writer.printCharacters("References:");
|
||||
writer.printTagEnd(Tag.span);
|
||||
writer.printTagEnd(Tag.dt);
|
||||
writer.printTagStart(Tag.dd);
|
||||
writer.printTagStart(Tag.code);
|
||||
writer.printCharacters("test_IDX");
|
||||
writer.printTagEnd(Tag.code);
|
||||
writer.printCharacters(" - FK");
|
||||
writer.printTagEnd(Tag.dd);
|
||||
writer.printTagEnd(Tag.dl);
|
||||
|
||||
writer.docPageBlockEnd();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc;
|
||||
|
||||
public class DBConstrain {
|
||||
|
||||
private String name;
|
||||
}
|
|
@ -1,159 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DBIndex {
|
||||
|
||||
private String name = null;
|
||||
private String schema = null;
|
||||
private String catalog = null;
|
||||
private Boolean unique = null;
|
||||
private String indexQualifier = null;
|
||||
private DBIndexType type = null;
|
||||
private List<DBIndexColumn> indexColumns = null;
|
||||
private String sqlScript = null;
|
||||
|
||||
public DBIndex() {
|
||||
indexColumns = new ArrayList<DBIndexColumn>(3);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name the name to set
|
||||
*/
|
||||
protected void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the schema
|
||||
*/
|
||||
public String getSchema() {
|
||||
return schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param schema the schema to set
|
||||
*/
|
||||
protected void setSchema(String schema) {
|
||||
this.schema = schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the unique
|
||||
*/
|
||||
public Boolean getUnique() {
|
||||
return unique;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param unique the unique to set
|
||||
*/
|
||||
protected void setUnique(Boolean unique) {
|
||||
this.unique = unique;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the indexQualifier
|
||||
*/
|
||||
public String getIndexQualifier() {
|
||||
return indexQualifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param indexQualifier the indexQualifier to set
|
||||
*/
|
||||
protected void setIndexQualifier(String indexQualifier) {
|
||||
this.indexQualifier = indexQualifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the type
|
||||
*/
|
||||
public DBIndexType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type the type to set
|
||||
*/
|
||||
protected void setType(DBIndexType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the catalog
|
||||
*/
|
||||
public String getCatalog() {
|
||||
return catalog;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param catalog the catalog to set
|
||||
*/
|
||||
protected void setCatalog(String catalog) {
|
||||
this.catalog = catalog;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the indexColumns
|
||||
*/
|
||||
public List<DBIndexColumn> getIndexColumns() {
|
||||
return indexColumns;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param indexColumn the indexColumn to add
|
||||
*/
|
||||
protected void addIndexColumn(DBIndexColumn indexColumn) {
|
||||
this.indexColumns.add(indexColumn);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the sqlScript
|
||||
*/
|
||||
public String getSqlScript() {
|
||||
return sqlScript;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param sqlScript the sqlScript to set
|
||||
*/
|
||||
public void setSqlScript(String sqlScript) {
|
||||
this.sqlScript = sqlScript;
|
||||
}
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc;
|
||||
|
||||
public class DBIndexColumn {
|
||||
|
||||
private String table = null;
|
||||
private String column = null;
|
||||
private Boolean ascending = null;
|
||||
|
||||
/**
|
||||
* @return the table
|
||||
*/
|
||||
public String getTable() {
|
||||
return table;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param table the table to set
|
||||
*/
|
||||
public void setTable(String table) {
|
||||
this.table = table;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the column
|
||||
*/
|
||||
public String getColumn() {
|
||||
return column;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param column the column to set
|
||||
*/
|
||||
public void setColumn(String column) {
|
||||
this.column = column;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the ascending
|
||||
*/
|
||||
public Boolean getAscending() {
|
||||
return ascending;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ascending the ascending to set
|
||||
*/
|
||||
public void setAscending(Boolean ascending) {
|
||||
this.ascending = ascending;
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc;
|
||||
|
||||
import java.sql.DatabaseMetaData;
|
||||
|
||||
public enum DBIndexType {
|
||||
|
||||
STATISTIC,
|
||||
CLUSTERED,
|
||||
HASHED,
|
||||
OTHER;
|
||||
|
||||
public static DBIndexType parseJdbcMetaInfo(short dbType) {
|
||||
if (dbType==DatabaseMetaData.tableIndexClustered) {
|
||||
return CLUSTERED;
|
||||
}
|
||||
if (dbType==DatabaseMetaData.tableIndexHashed) {
|
||||
return HASHED;
|
||||
}
|
||||
if (dbType==DatabaseMetaData.tableIndexOther) {
|
||||
return OTHER;
|
||||
}
|
||||
if (dbType==DatabaseMetaData.tableIndexStatistic) {
|
||||
return STATISTIC;
|
||||
}
|
||||
throw new IllegalArgumentException("Unknown index type: "+dbType);
|
||||
}
|
||||
}
|
|
@ -1,114 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DBPrimaryKey {
|
||||
|
||||
private String name = null;
|
||||
private String catalog = null;
|
||||
private String schema = null;
|
||||
private String tableName = null;
|
||||
private List<String> columnNames = null;
|
||||
|
||||
public DBPrimaryKey() {
|
||||
columnNames = new ArrayList<String>(3);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name the name to set
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the catalog
|
||||
*/
|
||||
public String getCatalog() {
|
||||
return catalog;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param catalog the catalog to set
|
||||
*/
|
||||
public void setCatalog(String catalog) {
|
||||
this.catalog = catalog;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the schema
|
||||
*/
|
||||
public String getSchema() {
|
||||
return schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param schema the schema to set
|
||||
*/
|
||||
public void setSchema(String schema) {
|
||||
this.schema = schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the tableName
|
||||
*/
|
||||
public String getTableName() {
|
||||
return tableName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param tableName the tableName to set
|
||||
*/
|
||||
public void setTableName(String tableName) {
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the columnNames
|
||||
*/
|
||||
public List<String> getColumnNames() {
|
||||
return columnNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param columnNames the columnNames to set
|
||||
*/
|
||||
protected void addColumnName(String columnName) {
|
||||
this.columnNames.add(columnName);
|
||||
}
|
||||
}
|
|
@ -1,132 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
|
||||
public class DBTable {
|
||||
|
||||
private Table table;
|
||||
private DBPrimaryKey primaryKey;
|
||||
private List<DBIndex> indexes;
|
||||
private String sqlScript = null;
|
||||
|
||||
public DBTable() {
|
||||
indexes = new ArrayList<DBIndex>(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the table
|
||||
*/
|
||||
public Table getTable() {
|
||||
return table;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param table the table to set
|
||||
*/
|
||||
public void setTable(Table table) {
|
||||
this.table = table;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the primaryKey
|
||||
*/
|
||||
public DBPrimaryKey getPrimaryKey() {
|
||||
return primaryKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param primaryKey the primaryKey to set
|
||||
*/
|
||||
public void setPrimaryKey(DBPrimaryKey primaryKey) {
|
||||
this.primaryKey = primaryKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the indexes
|
||||
*/
|
||||
public List<DBIndex> getIndexes() {
|
||||
return indexes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param index the indexes to add.
|
||||
*/
|
||||
public void addIndex(DBIndex index) {
|
||||
this.indexes.add(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param indexes the indexes to add.
|
||||
*/
|
||||
public void addIndexes(Collection<DBIndex> indexes) {
|
||||
this.indexes.addAll(indexes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param index the indexes to remove.
|
||||
*/
|
||||
public void removeIndex(DBIndex index) {
|
||||
this.indexes.remove(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param index the indexes to add.
|
||||
*/
|
||||
public List<DBIndex> getIndexesByColumn(String column) {
|
||||
List<DBIndex> result = new ArrayList<DBIndex>(3);
|
||||
for (DBIndex index:indexes) {
|
||||
for (DBIndexColumn col:index.getIndexColumns()) {
|
||||
if (col.getColumn().equals(column)) {
|
||||
result.add(index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the sqlScript
|
||||
*/
|
||||
public String getSqlScript() {
|
||||
return sqlScript;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param sqlScript the sqlScript to set
|
||||
*/
|
||||
public void setSqlScript(String sqlScript) {
|
||||
this.sqlScript = sqlScript;
|
||||
}
|
||||
}
|
|
@ -1,184 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import org.eobjects.metamodel.doc.jdbc.db.DBType;
|
||||
import org.eobjects.metamodel.doc.jdbc.db.DBTypeFactory;
|
||||
import org.eobjects.metamodel.jdbc.JdbcDataContext;
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
import org.eobjects.metamodel.schema.TableType;
|
||||
|
||||
public class DBTableFactory {
|
||||
|
||||
public DBTable loadMetaTable(JdbcDataContext dc,Table table) throws SQLException {
|
||||
Connection conn = dc.getConnection();
|
||||
DatabaseMetaData meta = conn.getMetaData();
|
||||
DBTable result = new DBTable();
|
||||
result.setPrimaryKey(fetchPrimaryKeyInfo(meta, dc, table));
|
||||
result.setTable(table);
|
||||
result.addIndexes(fetchIndexInfo(meta, dc, table));
|
||||
|
||||
DBType dbType = DBTypeFactory.getDBType(dc.getConnection());
|
||||
if (dbType!=null) {
|
||||
String sqlScript;
|
||||
if (TableType.VIEW.equals(table.getType())) {
|
||||
sqlScript = dbType.getViewScript(dc.getConnection(), table.getName());
|
||||
} else {
|
||||
sqlScript = dbType.getTableScript(dc.getConnection(), table);
|
||||
}
|
||||
result.setSqlScript(sqlScript);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private DBPrimaryKey fetchPrimaryKeyInfo(DatabaseMetaData meta,JdbcDataContext dc,Table table) throws SQLException {
|
||||
DBPrimaryKey result = new DBPrimaryKey();
|
||||
TreeMap<Short,String> columns = new TreeMap<Short,String>();
|
||||
ResultSet indexInformation = meta.getPrimaryKeys(dc.getCatalogName(), table.getSchema().getName(), table.getName());
|
||||
while (indexInformation.next()) {
|
||||
String dbCatalog = indexInformation.getString("TABLE_CAT");
|
||||
String dbSchema = indexInformation.getString("TABLE_SCHEM");
|
||||
String dbTableName = indexInformation.getString("TABLE_NAME");
|
||||
String dbColumnName = indexInformation.getString("COLUMN_NAME");
|
||||
short dbKeySeq = indexInformation.getShort("KEY_SEQ");
|
||||
String dbPkName = indexInformation.getString("PK_NAME");
|
||||
|
||||
result.setCatalog(dbCatalog);
|
||||
result.setName(dbPkName);
|
||||
result.setSchema(dbSchema);
|
||||
result.setTableName(dbTableName);
|
||||
columns.put(dbKeySeq, dbColumnName);
|
||||
}
|
||||
if (result.getName()==null) {
|
||||
return null; // no PK on table !
|
||||
}
|
||||
result.getColumnNames().addAll(columns.values());
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<DBIndex> fetchIndexInfo(DatabaseMetaData meta,JdbcDataContext dc,Table table) throws SQLException {
|
||||
|
||||
Map<String,String> indexScripts = null;
|
||||
DBType dbType = DBTypeFactory.getDBType(dc.getConnection());
|
||||
if (dbType!=null) {
|
||||
indexScripts = dbType.getIndexScripts(dc.getConnection(), table.getName());
|
||||
}
|
||||
|
||||
DBIndex index = new DBIndex();
|
||||
List<DBIndex> result = new ArrayList<DBIndex>();
|
||||
ResultSet indexInformation = meta.getIndexInfo(dc.getCatalogName(), table.getSchema().getName(), table.getName(), false, false);
|
||||
while (indexInformation.next()) {
|
||||
String dbCatalog = indexInformation.getString("TABLE_CAT");
|
||||
String dbSchema = indexInformation.getString("TABLE_SCHEM");
|
||||
String dbTableName = indexInformation.getString("TABLE_NAME");
|
||||
boolean dbNoneUnique = indexInformation.getBoolean("NON_UNIQUE");
|
||||
String dbIndexQualifier = indexInformation.getString("INDEX_QUALIFIER");
|
||||
String dbIndexName = indexInformation.getString("INDEX_NAME");
|
||||
short indexType = indexInformation.getShort("TYPE");
|
||||
// short dbOrdinalPosition = indexInformation.getShort("ORDINAL_POSITION");
|
||||
String dbColumnName = indexInformation.getString("COLUMN_NAME");
|
||||
String dbAscOrDesc = indexInformation.getString("ASC_OR_DESC");
|
||||
// int dbCardinality = indexInformation.getInt("CARDINALITY");
|
||||
// int dbPages = indexInformation.getInt("PAGES");
|
||||
// String dbFilterCondition = indexInformation.getString("FILTER_CONDITION");
|
||||
|
||||
if (!dbIndexName.equals(index.getName())) {
|
||||
index = new DBIndex();
|
||||
result.add(index);
|
||||
|
||||
if (indexScripts!=null) {
|
||||
String indexScript = indexScripts.get(dbIndexName);
|
||||
index.setSqlScript(indexScript);
|
||||
}
|
||||
}
|
||||
index.setCatalog(dbCatalog);
|
||||
index.setIndexQualifier(dbIndexQualifier);
|
||||
index.setName(dbIndexName);
|
||||
index.setSchema(dbSchema);
|
||||
index.setType(DBIndexType.parseJdbcMetaInfo(indexType));
|
||||
index.setUnique(false==dbNoneUnique);
|
||||
|
||||
DBIndexColumn col = new DBIndexColumn();
|
||||
col.setTable(dbTableName);
|
||||
col.setColumn(dbColumnName);
|
||||
col.setAscending("A".equalsIgnoreCase(dbAscOrDesc));
|
||||
index.addIndexColumn(col);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private List<DBIndex> fetchExportedKeys(DatabaseMetaData meta,JdbcDataContext dc,Table table) throws SQLException {
|
||||
DBIndex index = new DBIndex();
|
||||
List<DBIndex> result = new ArrayList<DBIndex>();
|
||||
ResultSet indexInformation = meta.getExportedKeys(dc.getCatalogName(), table.getSchema().getName(), table.getName());
|
||||
while (indexInformation.next()) {
|
||||
String dbCatalog = indexInformation.getString("TABLE_CAT");
|
||||
String dbSchema = indexInformation.getString("TABLE_SCHEM");
|
||||
String dbTableName = indexInformation.getString("TABLE_NAME");
|
||||
boolean dbNoneUnique = indexInformation.getBoolean("NON_UNIQUE");
|
||||
String dbIndexQualifier = indexInformation.getString("INDEX_QUALIFIER");
|
||||
String dbIndexName = indexInformation.getString("INDEX_NAME");
|
||||
short dbType = indexInformation.getShort("TYPE");
|
||||
// short dbOrdinalPosition = indexInformation.getShort("ORDINAL_POSITION");
|
||||
String dbColumnName = indexInformation.getString("COLUMN_NAME");
|
||||
String dbAscOrDesc = indexInformation.getString("ASC_OR_DESC");
|
||||
// int dbCardinality = indexInformation.getInt("CARDINALITY");
|
||||
// int dbPages = indexInformation.getInt("PAGES");
|
||||
// String dbFilterCondition = indexInformation.getString("FILTER_CONDITION");
|
||||
|
||||
if (!dbIndexName.equals(index.getName())) {
|
||||
index = new DBIndex();
|
||||
result.add(index);
|
||||
}
|
||||
index.setCatalog(dbCatalog);
|
||||
index.setIndexQualifier(dbIndexQualifier);
|
||||
index.setName(dbIndexName);
|
||||
index.setSchema(dbSchema);
|
||||
index.setType(DBIndexType.parseJdbcMetaInfo(dbType));
|
||||
index.setUnique(false==dbNoneUnique);
|
||||
|
||||
DBIndexColumn col = new DBIndexColumn();
|
||||
col.setTable(dbTableName);
|
||||
col.setColumn(dbColumnName);
|
||||
col.setAscending("A".equalsIgnoreCase(dbAscOrDesc));
|
||||
index.addIndexColumn(col);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc.db;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
|
||||
public interface DBType {
|
||||
|
||||
String getDatabaseProductName();
|
||||
|
||||
Map<String,String> getIndexScripts(Connection conn,String table) throws SQLException;
|
||||
|
||||
String getViewScript(Connection conn,String viewName) throws SQLException;
|
||||
|
||||
String getTableScript(Connection conn,Table table) throws SQLException;
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc.db;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DBTypeFactory {
|
||||
|
||||
static private List<DBType> types = new ArrayList<DBType>(5);
|
||||
|
||||
static {
|
||||
types.add(new PostgresqlDBType());
|
||||
}
|
||||
|
||||
static public final DBType getDBType(Connection conn) throws SQLException {
|
||||
if (conn==null) {
|
||||
throw new NullPointerException("Can't resolve db on null connection.");
|
||||
}
|
||||
String jdbcProductName = conn.getMetaData().getDatabaseProductName();
|
||||
for (DBType type:types) {
|
||||
if (jdbcProductName.equalsIgnoreCase(type.getDatabaseProductName())) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,76 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc.db;
|
||||
|
||||
import java.sql.Connection;
|
||||
|
||||
import org.eobjects.metamodel.schema.Column;
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
|
||||
public class DBTypeTableScripter {
|
||||
|
||||
|
||||
public String createTableScript(Connection conn,Table table) {
|
||||
StringBuilder buf = new StringBuilder(100);
|
||||
buf.append("CREATE TABLE (\n");
|
||||
Column[] cols = table.getColumns();
|
||||
for (int i=0;i<cols.length;i++) {
|
||||
Column col = cols[i];
|
||||
buf.append("\t");
|
||||
buf.append(col.getName());
|
||||
buf.append(" ");
|
||||
buf.append(col.getNativeType());
|
||||
if (col.getNativeType().contains("char")) {
|
||||
buf.append("(");
|
||||
buf.append(col.getColumnSize());
|
||||
buf.append(")");
|
||||
}
|
||||
if (!col.isNullable()) {
|
||||
buf.append(" NOT NULL");
|
||||
}
|
||||
//if (i<cols.length-1) {
|
||||
// buf.append(",");
|
||||
//}
|
||||
buf.append("\n");
|
||||
}
|
||||
|
||||
buf.append("\tCONSTRAINT "+table.getName()+"_pkey_todo PRIMARY KEY (");
|
||||
Column[] pkeys = table.getPrimaryKeys();
|
||||
for (int i=0;i<pkeys.length;i++) {
|
||||
Column col = pkeys[i];
|
||||
buf.append(col.getName());
|
||||
if (i<pkeys.length-1) {
|
||||
buf.append(",");
|
||||
}
|
||||
}
|
||||
buf.append(")\n");
|
||||
|
||||
buf.append(")\n");
|
||||
return buf.toString();
|
||||
}
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc.db;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eobjects.metamodel.schema.Table;
|
||||
|
||||
public class PostgresqlDBType implements DBType {
|
||||
|
||||
public String getDatabaseProductName() {
|
||||
return "postgresql";
|
||||
}
|
||||
|
||||
public Map<String,String> getIndexScripts(Connection conn,String table) throws SQLException {
|
||||
Map<String,String> result = new HashMap<String,String>();
|
||||
|
||||
Statement s = conn.createStatement();
|
||||
s.execute("select indexname,indexdef from pg_indexes where schemaname != 'pg_catalog' and schemaname != 'information_schema' and tablename= '"+table+"'");
|
||||
ResultSet rs = s.getResultSet();
|
||||
while (rs.next()) {
|
||||
result.put(rs.getString(1), rs.getString(2));
|
||||
}
|
||||
rs.close();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public String getViewScript(Connection conn,String viewName) throws SQLException {
|
||||
String result = null;
|
||||
Statement s = conn.createStatement();
|
||||
s.execute("select viewname,definition from pg_views where schemaname != 'pg_catalog' and schemaname != 'information_schema' and viewname= '"+viewName+"'");
|
||||
ResultSet rs = s.getResultSet();
|
||||
if (rs.next()) {
|
||||
result = rs.getString(2);
|
||||
}
|
||||
rs.close();
|
||||
return result;
|
||||
}
|
||||
|
||||
public String getTableScript(Connection conn,Table table) throws SQLException {
|
||||
return new DBTypeTableScripter().createTableScript(conn, table);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc.db;
|
|
@ -1,28 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc.jdbc;
|
|
@ -1,28 +0,0 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* 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.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE 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 org.eobjects.metamodel.doc;
|
|
@ -25,7 +25,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -21,6 +21,18 @@
|
|||
<groupId>org.mariadb.jdbc</groupId>
|
||||
<artifactId>mariadb-java-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
@ -56,13 +68,17 @@
|
|||
<file file="target/dependency/logback-classic.jar" />
|
||||
<file file="target/dependency/commons-lang3.jar" />
|
||||
<file file="target/dependency/mariadb-java-client.jar" />
|
||||
<file file="target/dependency/postgresql.jar" />
|
||||
<file file="target/dependency/jackson-core.jar" />
|
||||
<file file="target/dependency/jackson-databind.jar" />
|
||||
<file file="target/dependency/jackson-annotations.jar" />
|
||||
</copy>
|
||||
<java failonerror="true" fork="true" classname="love.distributedrebirth.warpme.hash.WaterShotAddict">
|
||||
<arg value="target/chain" />
|
||||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -9,4 +9,8 @@
|
|||
<soft:hash file="bundle/logback-classic.jar" hex="0"/>
|
||||
<soft:hash file="bundle/commons-lang3.jar" hex="0"/>
|
||||
<soft:hash file="bundle/mariadb-java-client.jar" hex="0"/>
|
||||
<soft:hash file="bundle/postgresql.jar" hex="0"/>
|
||||
<soft:hash file="bundle/jackson-core.jar" hex="0"/>
|
||||
<soft:hash file="bundle/jackson-annotations.jar" hex="0"/>
|
||||
<soft:hash file="bundle/jackson-databind.jar" hex="0"/>
|
||||
</root:shot>
|
||||
|
|
|
@ -9,5 +9,9 @@
|
|||
<link:magic file="bundle/logback-classic.jar" mime="application/vnd.osgi.bundle"/>
|
||||
<link:magic file="bundle/commons-lang3.jar" mime="application/vnd.osgi.bundle"/>
|
||||
<link:magic file="bundle/mariadb-java-client.jar" mime="application/vnd.osgi.bundle"/>
|
||||
<link:magic file="bundle/postgresql.jar" mime="application/vnd.osgi.bundle"/>
|
||||
<link:magic file="bundle/jackson-core.jar" mime="application/vnd.osgi.bundle"/>
|
||||
<link:magic file="bundle/jackson-annotations.jar" mime="application/vnd.osgi.bundle"/>
|
||||
<link:magic file="bundle/jackson-databind.jar" mime="application/vnd.osgi.bundle"/>
|
||||
</link:sea>
|
||||
</root:ocean>
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<classpath>
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-o2o-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
|
||||
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
|
||||
</classpath>
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-x4o-o2o</artifactId>
|
||||
<artifactId>nx01-mushroom-mais-mm</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eobjects.metamodel</groupId>
|
||||
|
@ -80,9 +80,21 @@
|
|||
<artifactId>MetaModel-xml</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>postgresql</groupId>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mariadb.jdbc</groupId>
|
||||
<artifactId>mariadb-java-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
|
|
@ -127,22 +127,25 @@ public class GDXAppTos4BootFactory {
|
|||
"org.x4o.fc18,"+
|
||||
"org.x4o.fc18.cake2,"+
|
||||
"org.x4o.fc18.cake2.clk1k,"+
|
||||
"org.x4o.fc18.cake2.flag4,"+
|
||||
"org.x4o.fc18.cake2.gram5,"+
|
||||
"org.x4o.fc18.cake2.pie9c,"+
|
||||
"org.x4o.fc18.cake2.pie9d,"+
|
||||
"org.x4o.fc18.cake2.zero33,"+
|
||||
"org.x4o.fc18.cake2.zero33.dec1,"+
|
||||
"org.x4o.fc18.cake2.zero33.vt06,"+
|
||||
"org.x4o.fc18.octal8,"+
|
||||
"org.x4o.fc18.zion7,"+
|
||||
"org.x4o.o2o,"+
|
||||
"org.x4o.o2o.io,"+
|
||||
"org.x4o.o2o.io.sax3,"+
|
||||
"org.x4o.o2o.io.sax3.xdbx,"+
|
||||
"org.x4o.o2o.io.sax4,"+
|
||||
"org.x4o.o2o.io.tlv,"+
|
||||
"org.x4o.o2o.octal,"+
|
||||
"org.x4o.o2o.octo,"+
|
||||
"org.x4o.o2o.octo.conv,"+
|
||||
"org.x4o.o2o.tdoc,"+
|
||||
"org.x4o.o2o.tdoc.dom,"+
|
||||
"org.x4o.sax3,"+
|
||||
"org.x4o.sax3.io,"+
|
||||
"org.x4o.sax3.io.xdbx,"+
|
||||
"org.x4o.maisdoc,"+
|
||||
"org.x4o.maisdoc.flake,"+
|
||||
"org.x4o.maisdoc.model,"+
|
||||
"org.x4o.maisdoc.theme,"+
|
||||
"org.x4o.maisdoc.theme.base,"+
|
||||
"org.x4o.maisdoc.theme.jdk6,"+
|
||||
"org.x4o.maisdoc.theme.jdk7,"+
|
||||
"org.x4o.xml,"+
|
||||
"org.x4o.xml.conv,"+
|
||||
"org.x4o.xml.conv.text,"+
|
||||
|
@ -219,60 +222,98 @@ public class GDXAppTos4BootFactory {
|
|||
"love.distributedrebirth.unicode4d,"+
|
||||
"love.distributedrebirth.unicode4d.atlas,"+
|
||||
"love.distributedrebirth.unicode4d.draw,"+
|
||||
"org.x4o.html,"+
|
||||
"org.x4o.html.spec,"+
|
||||
"org.x4o.xml.eld.doc,"+
|
||||
"org.x4o.xml.eld.doc.api,"+
|
||||
"org.x4o.xml.eld.doc.api.dom,"+
|
||||
"org.x4o.xml.eld.doc.theme.base,"+
|
||||
"org.x4o.xml.eld.doc.theme.jdk6,"+
|
||||
"org.x4o.xml.eld.doc.theme.jdk7,"+
|
||||
"org.eobjects.metamodel,"+
|
||||
"org.eobjects.metamodel.convert,"+
|
||||
"org.eobjects.metamodel.create,"+
|
||||
"org.eobjects.metamodel.data,"+
|
||||
"org.eobjects.metamodel.delete,"+
|
||||
"org.eobjects.metamodel.drop,"+
|
||||
"org.eobjects.metamodel.insert,"+
|
||||
"org.eobjects.metamodel.intercept,"+
|
||||
"org.eobjects.metamodel.query,"+
|
||||
"org.eobjects.metamodel.query.builder,"+
|
||||
"org.eobjects.metamodel.query.parser,"+
|
||||
"org.eobjects.metamodel.schema,"+
|
||||
"org.eobjects.metamodel.update,"+
|
||||
"org.eobjects.metamodel.util,"+
|
||||
"org.eobjects.metamodel.csv,"+
|
||||
"org.eobjects.metamodel.xml,"+
|
||||
"org.eobjects.metamodel.mongodb,"+
|
||||
"org.eobjects.metamodel.jdbc,"+
|
||||
"org.eobjects.metamodel.jdbc.dialects,"+
|
||||
"love.distributedrebirth.nx01.mushroom.mais.mm,"+
|
||||
"org.eobjects.metamodel.doc,"+
|
||||
"org.eobjects.metamodel.doc.jdbc,"+
|
||||
"org.eobjects.metamodel.doc.jdbc.db,"+
|
||||
"org.apache.metamodel,"+
|
||||
"org.apache.metamodel.convert,"+
|
||||
"org.apache.metamodel.create,"+
|
||||
"org.apache.metamodel.data,"+
|
||||
"org.apache.metamodel.delete,"+
|
||||
"org.apache.metamodel.drop,"+
|
||||
"org.apache.metamodel.insert,"+
|
||||
"org.apache.metamodel.intercept,"+
|
||||
"org.apache.metamodel.query,"+
|
||||
"org.apache.metamodel.query.builder,"+
|
||||
"org.apache.metamodel.query.parser,"+
|
||||
"org.apache.metamodel.schema,"+
|
||||
"org.apache.metamodel.update,"+
|
||||
"org.apache.metamodel.util,"+
|
||||
"org.apache.metamodel.csv,"+
|
||||
"org.apache.metamodel.xml,"+
|
||||
"org.apache.metamodel.mongodb,"+
|
||||
"org.apache.metamodel.jdbc,"+
|
||||
"org.apache.metamodel.jdbc.dialects,"+
|
||||
"au.com.bytecode.opencsv,"+
|
||||
"au.com.bytecode.opencsv.bean,"+
|
||||
"org.postgresql,"+
|
||||
"org.postgresql.copy,"+
|
||||
"org.postgresql.core,"+
|
||||
"org.postgresql.core.types,"+
|
||||
"org.postgresql.core.v2,"+
|
||||
"org.postgresql.core.v3,"+
|
||||
"org.postgresql.core.v3.adaptivefetch,"+
|
||||
"org.postgresql.core.v3.replication,"+
|
||||
"org.postgresql.ds,"+
|
||||
"org.postgresql.ds.common,"+
|
||||
"org.postgresql.ds.jdbc23,"+
|
||||
"org.postgresql.db.jdbc4,"+
|
||||
"org.postgresql.fastpath,"+
|
||||
"org.postgresql.geometric,"+
|
||||
"org.postgresql.gss,"+
|
||||
"org.postgresql.hostchooser,"+
|
||||
"org.postgresql.jdbc,"+
|
||||
"org.postgresql.jdbc2,"+
|
||||
"org.postgresql.jdbc2.optional,"+
|
||||
"org.postgresql.jdbc3,"+
|
||||
"org.postgresql.jdbc3g,"+
|
||||
"org.postgresql.jdbc4,"+
|
||||
"org.postgresql.jdbcurlresolver,"+
|
||||
"org.postgresql.largeobject,"+
|
||||
"org.postgresql.osgi,"+
|
||||
"org.postgresql.plugin,"+
|
||||
"org.postgresql.replication,"+
|
||||
"org.postgresql.replication.fluent,"+
|
||||
"org.postgresql.replication.fluent.logical,"+
|
||||
"org.postgresql.replication.fluent.physical,"+
|
||||
"org.postgresql.ssl,"+
|
||||
"org.postgresql.ssl.jdbc4,"+
|
||||
"org.postgresql.sspi,"+
|
||||
"org.postgresql.translation,"+
|
||||
"org.postgresql.util,"+
|
||||
"org.postgresql.util.internal,"+
|
||||
"org.postgresql.xa,"+
|
||||
"org.postgresql.xa.jdbc3,"+
|
||||
"org.postgresql.xa.jdbc4"
|
||||
"org.postgresql.xml,"+
|
||||
"com.fasterxml.jackson.core,"+
|
||||
"com.fasterxml.jackson.core.async,"+
|
||||
"com.fasterxml.jackson.core.base,"+
|
||||
"com.fasterxml.jackson.core.exc,"+
|
||||
"com.fasterxml.jackson.core.filter,"+
|
||||
"com.fasterxml.jackson.core.format,"+
|
||||
"com.fasterxml.jackson.core.io,"+
|
||||
"com.fasterxml.jackson.core.json,"+
|
||||
"com.fasterxml.jackson.core.json.async,"+
|
||||
"com.fasterxml.jackson.core.sym,"+
|
||||
"com.fasterxml.jackson.core.type,"+
|
||||
"com.fasterxml.jackson.core.util,"+
|
||||
"com.fasterxml.jackson.annotation,"+
|
||||
"com.fasterxml.jackson.databind,"+
|
||||
"com.fasterxml.jackson.databind.annotation,"+
|
||||
"com.fasterxml.jackson.databind.cfg,"+
|
||||
"com.fasterxml.jackson.databind.deser,"+
|
||||
"com.fasterxml.jackson.databind.deser.impl,"+
|
||||
"com.fasterxml.jackson.databind.deser.std,"+
|
||||
"com.fasterxml.jackson.databind.exc,"+
|
||||
"com.fasterxml.jackson.databind.ext,"+
|
||||
"com.fasterxml.jackson.databind.introspect,"+
|
||||
"com.fasterxml.jackson.databind.jdk14,"+
|
||||
"com.fasterxml.jackson.databind.json,"+
|
||||
"com.fasterxml.jackson.databind.jsonFormatVisitors,"+
|
||||
"com.fasterxml.jackson.databind.jsonschema,"+
|
||||
"com.fasterxml.jackson.databind.jsontype,"+
|
||||
"com.fasterxml.jackson.databind.jsontype.impl,"+
|
||||
"com.fasterxml.jackson.databind.module,"+
|
||||
"com.fasterxml.jackson.databind.node,"+
|
||||
"com.fasterxml.jackson.databind.ser,"+
|
||||
"com.fasterxml.jackson.databind.ser.impl,"+
|
||||
"com.fasterxml.jackson.databind.ser.std,"+
|
||||
"com.fasterxml.jackson.databind.type,"+
|
||||
"com.fasterxml.jackson.databind.util"
|
||||
); // ; version=1.0.0
|
||||
|
||||
if (cachedir != null) {
|
||||
|
|
160
pom.xml
160
pom.xml
|
@ -44,6 +44,9 @@
|
|||
<org.slf4j.version>1.7.36</org.slf4j.version>
|
||||
<nx01.version>〇一。壬寅。一〄-SNAPSHOT</nx01.version>
|
||||
<jasper-el.version>6.0.53</jasper-el.version>
|
||||
<metamodel.version>5.3.6</metamodel.version>
|
||||
<!-- TODO: Add json support to X4O and replace jackson dep in meta-model-jdbc see: https://github.com/datacleaner/metamodel/blob/master/jdbc/pom.xml -->
|
||||
<jackson.version>2.13.1</jackson.version>
|
||||
<tos4.packages>
|
||||
org.osgi.framework,
|
||||
org.osgi.service.packageadmin,
|
||||
|
@ -109,22 +112,25 @@
|
|||
org.x4o.fc18,
|
||||
org.x4o.fc18.cake2,
|
||||
org.x4o.fc18.cake2.clk1k,
|
||||
org.x4o.fc18.cake2.flag4,
|
||||
org.x4o.fc18.cake2.gram5,
|
||||
org.x4o.fc18.cake2.pie9c,
|
||||
org.x4o.fc18.cake2.pie9d,
|
||||
org.x4o.fc18.cake2.zero33,
|
||||
org.x4o.fc18.cake2.zero33.dec1,
|
||||
org.x4o.fc18.cake2.zero33.vt06,
|
||||
org.x4o.fc18.octal8,
|
||||
org.x4o.fc18.zion7,
|
||||
org.x4o.o2o,
|
||||
org.x4o.o2o.io,
|
||||
org.x4o.o2o.io.sax3,
|
||||
org.x4o.o2o.io.sax3.xdbx,
|
||||
org.x4o.o2o.io.sax4,
|
||||
org.x4o.o2o.io.tlv,
|
||||
org.x4o.o2o.octal,
|
||||
org.x4o.o2o.octo,
|
||||
org.x4o.o2o.octo.conv,
|
||||
org.x4o.o2o.tdoc,
|
||||
org.x4o.o2o.tdoc.dom,
|
||||
org.x4o.sax3,
|
||||
org.x4o.sax3.io,
|
||||
org.x4o.sax3.io.xdbx,
|
||||
org.x4o.maisdoc,
|
||||
org.x4o.maisdoc.flake,
|
||||
org.x4o.maisdoc.model,
|
||||
org.x4o.maisdoc.theme,
|
||||
org.x4o.maisdoc.theme.base,
|
||||
org.x4o.maisdoc.theme.jdk6,
|
||||
org.x4o.maisdoc.theme.jdk7,
|
||||
org.x4o.xml,
|
||||
org.x4o.xml.conv,
|
||||
org.x4o.xml.conv.text,
|
||||
|
@ -200,7 +206,11 @@
|
|||
love.distributedrebirth.warpme.ship,
|
||||
love.distributedrebirth.unicode4d,
|
||||
love.distributedrebirth.unicode4d.atlas,
|
||||
love.distributedrebirth.unicode4d.draw
|
||||
love.distributedrebirth.unicode4d.draw,
|
||||
love.distributedrebirth.nx01.mushroom.mais.mm,
|
||||
org.eobjects.metamodel.doc,
|
||||
org.eobjects.metamodel.doc.jdbc,
|
||||
org.eobjects.metamodel.doc.jdbc.db,
|
||||
</tos4.packages>
|
||||
<vrgem4.packages>
|
||||
love.distributedrebirth.gdxapp4d.vrgem4.service,
|
||||
|
@ -233,52 +243,94 @@
|
|||
org.apache.commons.lang3.tuple
|
||||
</lang3.packages>
|
||||
<mmdoc.packages>
|
||||
org.eobjects.metamodel,
|
||||
org.eobjects.metamodel.convert,
|
||||
org.eobjects.metamodel.create,
|
||||
org.eobjects.metamodel.data,
|
||||
org.eobjects.metamodel.delete,
|
||||
org.eobjects.metamodel.drop,
|
||||
org.eobjects.metamodel.insert,
|
||||
org.eobjects.metamodel.intercept,
|
||||
org.eobjects.metamodel.query,
|
||||
org.eobjects.metamodel.query.builder,
|
||||
org.eobjects.metamodel.query.parser,
|
||||
org.eobjects.metamodel.schema,
|
||||
org.eobjects.metamodel.update,
|
||||
org.eobjects.metamodel.util,
|
||||
org.eobjects.metamodel.csv,
|
||||
org.eobjects.metamodel.xml,
|
||||
org.eobjects.metamodel.mongodb,
|
||||
org.eobjects.metamodel.jdbc,
|
||||
org.eobjects.metamodel.jdbc.dialects,
|
||||
org.apache.metamodel,
|
||||
org.apache.metamodel.convert,
|
||||
org.apache.metamodel.create,
|
||||
org.apache.metamodel.data,
|
||||
org.apache.metamodel.delete,
|
||||
org.apache.metamodel.drop,
|
||||
org.apache.metamodel.insert,
|
||||
org.apache.metamodel.intercept,
|
||||
org.apache.metamodel.query,
|
||||
org.apache.metamodel.query.builder,
|
||||
org.apache.metamodel.query.parser,
|
||||
org.apache.metamodel.schema,
|
||||
org.apache.metamodel.update,
|
||||
org.apache.metamodel.util,
|
||||
org.apache.metamodel.csv,
|
||||
org.apache.metamodel.xml,
|
||||
org.apache.metamodel.mongodb,
|
||||
org.apache.metamodel.jdbc,
|
||||
org.apache.metamodel.jdbc.dialects,
|
||||
au.com.bytecode.opencsv,
|
||||
au.com.bytecode.opencsv.bean,
|
||||
org.postgresql,
|
||||
org.postgresql.copy,
|
||||
org.postgresql.core,
|
||||
org.postgresql.core.types,
|
||||
org.postgresql.core.v2,
|
||||
org.postgresql.core.v3,
|
||||
org.postgresql.core.v3.adaptivefetch,
|
||||
org.postgresql.core.v3.replication,
|
||||
org.postgresql.ds,
|
||||
org.postgresql.ds.common,
|
||||
org.postgresql.ds.jdbc23,
|
||||
org.postgresql.db.jdbc4,
|
||||
org.postgresql.fastpath,
|
||||
org.postgresql.geometric,
|
||||
org.postgresql.gss,
|
||||
org.postgresql.hostchooser,
|
||||
org.postgresql.jdbc,
|
||||
org.postgresql.jdbc2,
|
||||
org.postgresql.jdbc2.optional,
|
||||
org.postgresql.jdbc3,
|
||||
org.postgresql.jdbc3g,
|
||||
org.postgresql.jdbc4,
|
||||
org.postgresql.jdbcurlresolver,
|
||||
org.postgresql.largeobject,
|
||||
org.postgresql.osgi,
|
||||
org.postgresql.plugin,
|
||||
org.postgresql.replication,
|
||||
org.postgresql.replication.fluent,
|
||||
org.postgresql.replication.fluent.logical,
|
||||
org.postgresql.replication.fluent.physical,
|
||||
org.postgresql.ssl,
|
||||
org.postgresql.ssl.jdbc4,
|
||||
org.postgresql.sspi,
|
||||
org.postgresql.translation,
|
||||
org.postgresql.util,
|
||||
org.postgresql.util.internal,
|
||||
org.postgresql.xa,
|
||||
org.postgresql.xa.jdbc3,
|
||||
org.postgresql.xa.jdbc4
|
||||
org.postgresql.xml,
|
||||
com.fasterxml.jackson.core,
|
||||
com.fasterxml.jackson.core.async,
|
||||
com.fasterxml.jackson.core.base,
|
||||
com.fasterxml.jackson.core.exc,
|
||||
com.fasterxml.jackson.core.filter,
|
||||
com.fasterxml.jackson.core.format,
|
||||
com.fasterxml.jackson.core.io,
|
||||
com.fasterxml.jackson.core.json,
|
||||
com.fasterxml.jackson.core.json.async,
|
||||
com.fasterxml.jackson.core.sym,
|
||||
com.fasterxml.jackson.core.type,
|
||||
com.fasterxml.jackson.core.util,
|
||||
com.fasterxml.jackson.annotation,
|
||||
com.fasterxml.jackson.databind,
|
||||
com.fasterxml.jackson.databind.annotation,
|
||||
com.fasterxml.jackson.databind.cfg,
|
||||
com.fasterxml.jackson.databind.deser,
|
||||
com.fasterxml.jackson.databind.deser.impl,
|
||||
com.fasterxml.jackson.databind.deser.std,
|
||||
com.fasterxml.jackson.databind.exc,
|
||||
com.fasterxml.jackson.databind.ext,
|
||||
com.fasterxml.jackson.databind.introspect,
|
||||
com.fasterxml.jackson.databind.jdk14,
|
||||
com.fasterxml.jackson.databind.json,
|
||||
com.fasterxml.jackson.databind.jsonFormatVisitors,
|
||||
com.fasterxml.jackson.databind.jsonschema,
|
||||
com.fasterxml.jackson.databind.jsontype,
|
||||
com.fasterxml.jackson.databind.jsontype.impl,
|
||||
com.fasterxml.jackson.databind.module,
|
||||
com.fasterxml.jackson.databind.node,
|
||||
com.fasterxml.jackson.databind.ser,
|
||||
com.fasterxml.jackson.databind.ser.impl,
|
||||
com.fasterxml.jackson.databind.ser.std,
|
||||
com.fasterxml.jackson.databind.type,
|
||||
com.fasterxml.jackson.databind.util
|
||||
</mmdoc.packages>
|
||||
<mariadb.packages>
|
||||
org.mariadb.jdbc,
|
||||
|
@ -399,22 +451,32 @@
|
|||
<dependency>
|
||||
<groupId>org.eobjects.metamodel</groupId>
|
||||
<artifactId>MetaModel-jdbc</artifactId>
|
||||
<version>3.4.11</version>
|
||||
<version>${metamodel.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eobjects.metamodel</groupId>
|
||||
<artifactId>MetaModel-csv</artifactId>
|
||||
<version>3.4.11</version>
|
||||
<version>${metamodel.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eobjects.metamodel</groupId>
|
||||
<artifactId>MetaModel-xml</artifactId>
|
||||
<version>3.4.11</version>
|
||||
<version>${metamodel.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>postgresql</groupId>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
<version>9.1-901-1.jdbc4</version>
|
||||
<version>42.7.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mariadb.jdbc</groupId>
|
||||
|
@ -426,6 +488,11 @@
|
|||
<artifactId>nx01-jpp-base</artifactId>
|
||||
<version>${nx01.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-mushroom-mais-mm</artifactId>
|
||||
<version>${nx01.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-warp-core</artifactId>
|
||||
|
@ -451,11 +518,6 @@
|
|||
<artifactId>nx01-x4o-fc18</artifactId>
|
||||
<version>${nx01.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-x4o-o2o</artifactId>
|
||||
<version>${nx01.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<dependencies>
|
||||
|
|
Loading…
Reference in a new issue