diff --git a/.classpath b/.classpath index 476da60bc..afc56bff0 100644 --- a/.classpath +++ b/.classpath @@ -3,7 +3,6 @@ - @@ -492,15 +491,31 @@ - - - + + + + + + + + + + + + + + + - + + + + + @@ -531,20 +546,70 @@ - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index a738d596e..441129f2e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ build/ target/ tmp/ -<<<<<<< HEAD *.class *,so *,si diff --git a/build.xml b/build.xml index 07919a9d4..73c9f2f38 100644 --- a/build.xml +++ b/build.xml @@ -6,6 +6,7 @@ + @@ -62,14 +63,16 @@ - + - + + + @@ -151,7 +154,7 @@ - + l : entityLists) + if (l.size() > 0) + { + if (l.get(0).getClass().equals(Characteristic.class)) exportCharacteristic(l, new File(directory + + "/characteristic.txt")); + if (l.get(0).getClass().equals(Feature.class)) exportFeature(l, new File(directory + "/feature.txt")); + if (l.get(0).getClass().equals(Category.class)) exportCategory(l, new File(directory + "/category.txt")); + } + + logger.debug("done"); + } + + /** + * Export while excluding or including certain entity types. Defaults set: + * skip autoId, no QueryRules. If exclusion is set to true, the specialCases + * are used to exlude those entities from the export (entities not in list + * are exported). If exclusion is set to false, the specialCases are used to + * include those entities in the export (only entities in list are + * exported). + */ + public void exportSpecial(File directory, Database db, List> specialCases, boolean exclusion) + throws Exception + { + exportSpecial(directory, db, true, specialCases, exclusion, new QueryRule[] + {}); + } + + /** + * Export while excluding or including certain entity types. If exclusion is + * set to true, the specialCases are used to exlude those entities from the + * export (entities not in list are exported). If exclusion is set to false, + * the specialCases are used to include those entities in the export (only + * entities in list are exported). TODO: Could maybe replace exportAll(File + * directory, List ... entityLists) ? + */ + public void exportSpecial(File directory, Database db, boolean skipAutoId, + List> specialCases, boolean exclusion, QueryRule... rules) throws Exception + { + if ((exclusion && !specialCases.contains(Characteristic.class)) + || (!exclusion && specialCases.contains(Characteristic.class))) + { + exportCharacteristic(db, new File(directory + "/characteristic.txt"), + skipAutoId ? Arrays.asList(new String[] + { "Identifier", "Name", "__Type", "description" }) : null, rules); + } + if ((exclusion && !specialCases.contains(Feature.class)) + || (!exclusion && specialCases.contains(Feature.class))) + { + exportFeature(db, new File(directory + "/feature.txt"), skipAutoId ? Arrays.asList(new String[] + { "Identifier", "Name", "__Type", "description", "dataType" }) : null, rules); + } + if ((exclusion && !specialCases.contains(Category.class)) + || (!exclusion && specialCases.contains(Category.class))) + { + exportCategory(db, new File(directory + "/category.txt"), skipAutoId ? Arrays.asList(new String[] + { "feature_Identifier" }) : null, rules); + } + + logger.debug("done"); + } + + private QueryRule[] matchQueryRulesToEntity(org.molgenis.model.elements.Entity e, QueryRule... rules) + throws MolgenisModelException + { + ArrayList tmpResult = new ArrayList(); + for (QueryRule q : rules) + { + if (!(e.getAllField(q.getField()) == null)) + { + tmpResult.add(q); // field is okay for this entity + } + // special case: eg. investigation.name -> if current entity is + // 'investigation', use field 'name' + String[] splitField = q.getField().split("\\."); + if (splitField.length == 2) + { + if (e.getName().equals(splitField[0])) + { + QueryRule copy = new QueryRule(q); + copy.setField(splitField[1]); + tmpResult.add(copy); + } + } + } + QueryRule[] result = new QueryRule[tmpResult.size()]; + for (int i = 0; i < result.length; i++) + { + result[i] = tmpResult.get(i); + } + return result; + } + + /** + * export Characteristic to file. + * + * @param db + * the database to export from. + * @param f + * the file to export to. + */ + public void exportCharacteristic(Database db, File f, List fieldsToExport, QueryRule... rules) + throws DatabaseException, IOException, ParseException, MolgenisModelException + { + if (db.count(Characteristic.class, new QueryRule("__Type", Operator.EQUALS, "Characteristic")) > 0) + { + + org.molgenis.framework.db.Query query = db.query(Characteristic.class); + QueryRule type = new QueryRule("__Type", Operator.EQUALS, "Characteristic"); + query.addRules(type); + QueryRule[] newRules = matchQueryRulesToEntity(db.getMetaData().getEntity("Characteristic"), rules); + query.addRules(newRules); + int count = query.count(); + if (count > 0) + { + CsvFileWriter characteristicWriter = new CsvFileWriter(f); + query.find(characteristicWriter, fieldsToExport); + characteristicWriter.close(); + } + } + } + + public void exportCharacteristic(List entities, File file) throws IOException, + MolgenisModelException + { + if (entities.size() > 0) + { + // filter nulls + List fields = entities.get(0).getFields(); + List notNulls = new ArrayList(); + + for (String f : fields) + { + for (Entity e : entities) + { + if (e.get(f) != null) + { + notNulls.add(f); + break; + } + } + } + + // write + CsvFileWriter characteristicWriter = new CsvFileWriter(file, notNulls); + characteristicWriter.writeHeader(); + for (Entity e : entities) + { + characteristicWriter.writeRow((org.molgenis.util.Entity) e); + } + characteristicWriter.close(); + } + } + + /** + * export Feature to file. + * + * @param db + * the database to export from. + * @param f + * the file to export to. + */ + public void exportFeature(Database db, File f, List fieldsToExport, QueryRule... rules) + throws DatabaseException, IOException, ParseException, MolgenisModelException + { + if (db.count(Feature.class, new QueryRule("__Type", Operator.EQUALS, "Feature")) > 0) + { + + org.molgenis.framework.db.Query query = db.query(Feature.class); + QueryRule type = new QueryRule("__Type", Operator.EQUALS, "Feature"); + query.addRules(type); + QueryRule[] newRules = matchQueryRulesToEntity(db.getMetaData().getEntity("Feature"), rules); + query.addRules(newRules); + int count = query.count(); + if (count > 0) + { + CsvFileWriter featureWriter = new CsvFileWriter(f); + query.find(featureWriter, fieldsToExport); + featureWriter.close(); + } + } + } + + public void exportFeature(List entities, File file) throws IOException, MolgenisModelException + { + if (entities.size() > 0) + { + // filter nulls + List fields = entities.get(0).getFields(); + List notNulls = new ArrayList(); + + for (String f : fields) + { + for (Entity e : entities) + { + if (e.get(f) != null) + { + notNulls.add(f); + break; + } + } + } + + // write + CsvFileWriter featureWriter = new CsvFileWriter(file, notNulls); + featureWriter.writeHeader(); + for (Entity e : entities) + { + featureWriter.writeRow((org.molgenis.util.Entity) e); + } + featureWriter.close(); + } + } + + /** + * export Category to file. + * + * @param db + * the database to export from. + * @param f + * the file to export to. + */ + public void exportCategory(Database db, File f, List fieldsToExport, QueryRule... rules) + throws DatabaseException, IOException, ParseException, MolgenisModelException + { + if (db.count(Category.class) > 0) + { + + org.molgenis.framework.db.Query query = db.query(Category.class); + + QueryRule[] newRules = matchQueryRulesToEntity(db.getMetaData().getEntity("Category"), rules); + query.addRules(newRules); + int count = query.count(); + if (count > 0) + { + CsvFileWriter categoryWriter = new CsvFileWriter(f); + query.find(categoryWriter, fieldsToExport); + categoryWriter.close(); + } + } + } + + public void exportCategory(List entities, File file) throws IOException, MolgenisModelException + { + if (entities.size() > 0) + { + // filter nulls + List fields = entities.get(0).getFields(); + List notNulls = new ArrayList(); + + for (String f : fields) + { + for (Entity e : entities) + { + if (e.get(f) != null) + { + notNulls.add(f); + break; + } + } + } + + // write + CsvFileWriter categoryWriter = new CsvFileWriter(file, notNulls); + categoryWriter.writeHeader(); + for (Entity e : entities) + { + categoryWriter.writeRow((org.molgenis.util.Entity) e); + } + categoryWriter.close(); + } + } +} \ No newline at end of file diff --git a/generated/test/java/org/molgenis/model/Autoid.java b/generated/test/java/org/molgenis/model/Autoid.java new file mode 100644 index 000000000..8b91ee0c8 --- /dev/null +++ b/generated/test/java/org/molgenis/model/Autoid.java @@ -0,0 +1,20 @@ + +/* File: org.molgenis/model/Autoid.java + * Generator: org.molgenis.generators.DataTypeGen 4.0.0-testing + * + * THIS FILE HAS BEEN GENERATED, PLEASE DO NOT EDIT! + */ + + +package org.molgenis.model; + +/** + * Autoid: . + * @author MOLGENIS generator + */ +public interface Autoid extends org.molgenis.util.Entity +{ + public Integer getId(); + public void setId(Integer id); +} + diff --git a/generated/test/java/org/molgenis/model/Category.java b/generated/test/java/org/molgenis/model/Category.java new file mode 100644 index 000000000..3453a3ee4 --- /dev/null +++ b/generated/test/java/org/molgenis/model/Category.java @@ -0,0 +1,411 @@ + +/* File: org.molgenis/model/Category.java + * Generator: org.molgenis.generators.DataTypeGen 4.0.0-testing + * + * THIS FILE HAS BEEN GENERATED, PLEASE DO NOT EDIT! + */ + + +package org.molgenis.model; + +/** + * Category: . + * @author MOLGENIS generator + */ +@javax.persistence.Entity +//@org.hibernate.search.annotations.Indexed +@javax.persistence.Table(name = "Category" +) + + +@javax.xml.bind.annotation.XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD) +//@EntityListeners({org.molgenis.model.db.CategoryEntityListener.class}) +public class Category extends org.molgenis.util.AbstractEntity implements org.molgenis.model.Autoid +{ + // fieldname constants + public final static String ID = "id"; + public final static String FEATURE = "feature"; + public final static String FEATURE_IDENTIFIER = "feature_Identifier"; + + //static methods + /** + * Shorthand for db.query(Category.class). + */ + public static org.molgenis.framework.db.Query query(org.molgenis.framework.db.Database db) + { + return db.query(Category.class); + } + + /** + * Shorthand for db.find(Category.class, org.molgenis.framework.db.QueryRule ... rules). + */ + public static java.util.List find(org.molgenis.framework.db.Database db, org.molgenis.framework.db.QueryRule ... rules) throws org.molgenis.framework.db.DatabaseException + { + return db.find(Category.class, rules); + } + + /** + * + */ + public static Category findById(org.molgenis.framework.db.Database db, Integer id) throws org.molgenis.framework.db.DatabaseException + { + org.molgenis.framework.db.Query q = db.query(Category.class); + q.eq(Category.ID, id); + java.util.List result = q.find(); + if(result.size()>0) return result.get(0); + else return null; + } + + + // member variables (including setters.getters for interface) + + + //id[type=int] + @javax.persistence.Id @javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO) + @javax.persistence.Column(name="id", nullable=false) + @javax.xml.bind.annotation.XmlElement(name="id") + + //@javax.validation.constraints.NotNull + private Integer id = null; + + + //feature[type=xref] + @javax.persistence.ManyToOne(fetch=javax.persistence.FetchType.LAZY /*cascade={javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}*/) + @javax.persistence.JoinColumn(name="feature", nullable=false) + + + + @javax.validation.constraints.NotNull + private org.molgenis.model.Feature feature = null; + @javax.persistence.Transient + private Integer feature_id = null; + @javax.persistence.Transient + private String feature_Identifier = null; + + //constructors + public Category() + { + + } + + //getters and setters + /** + * Get the id. + * @return id. + */ + @Override + public Integer getId() + { + return this.id; + } + + + /** + * Set the id. + * @param id + */ + @Override + public void setId( Integer id) + { + this.id = id; + } + + + + /** + * Get the feature. + * @return feature. + */ + public org.molgenis.model.Feature getFeature() + { + return this.feature; + } + + @Deprecated + public org.molgenis.model.Feature getFeature(org.molgenis.framework.db.Database db) + { + throw new UnsupportedOperationException(); + } + + /** + * Set the feature. + * @param feature + */ + public void setFeature( org.molgenis.model.Feature feature) + { + + this.feature = feature; + } + + + + /** + * Set foreign key for field feature. + * This will erase any foreign key objects currently set. + * FIXME: can we autoload the new object? + */ + public void setFeature_Id(Integer feature_id) + { + this.feature_id = feature_id; + } + + public void setFeature(Integer feature_id) + { + this.feature_id = feature_id; + } + + public Integer getFeature_Id() + { + + if(feature != null) + { + return feature.getId(); + } + else + { + return feature_id; + } + } + + /** + * Get a pretty label Identifier for cross reference Feature to Feature.Id. + */ + public String getFeature_Identifier() + { + //FIXME should we auto-load based on getFeature()? + if(feature != null) { + return feature.getIdentifier(); + } else { + return feature_Identifier; + } + } + + /** + * Set a pretty label for cross reference Feature to Feature.Id. + * Implies setFeature(null) until save + */ + public void setFeature_Identifier(String feature_Identifier) + { + this.feature_Identifier = feature_Identifier; + } + + + + + /** + * Generic getter. Get the property by using the name. + */ + @Override + public Object get(String name) + { + name = name.toLowerCase(); + if (name.toLowerCase().equals("id")) + return getId(); + if (name.toLowerCase().equals("feature")) + return getFeature(); + if(name.toLowerCase().equals("feature_id")) + return getFeature_Id(); + if(name.toLowerCase().equals("feature_identifier")) + return getFeature_Identifier(); + return ""; + } + + @Override + public void validate() throws org.molgenis.framework.db.DatabaseException + { + if(this.getId() == null) throw new org.molgenis.framework.db.DatabaseException("required field id is null"); + if(this.getFeature() == null) throw new org.molgenis.framework.db.DatabaseException("required field feature is null"); + } + + + + //@Implements + @Override + public void set( org.molgenis.util.Tuple tuple, boolean strict ) throws Exception + { + //optimization :-( + if(tuple instanceof org.molgenis.util.ResultSetTuple) + { + //set Id + this.setId(tuple.getInt("id")); + //set Feature + this.setFeature(tuple.getInt("feature")); + //set label Identifier for xref field Feature + this.setFeature_Identifier(tuple.getString("feature_Identifier")); + } + else if(tuple != null) + { + //set Id + if( strict || tuple.getInt("id") != null) this.setId(tuple.getInt("id")); + if( tuple.getInt("Category_id") != null) this.setId(tuple.getInt("Category_id")); + //set Feature + if( strict || tuple.getInt("feature_id") != null) this.setFeature(tuple.getInt("feature_id")); + if( tuple.getInt("Category_feature_id") != null) this.setFeature(tuple.getInt("Category_feature_id")); + //alias of xref + if( tuple.getObject("feature") != null) this.setFeature(tuple.getInt("feature")); + if( tuple.getObject("Category_feature") != null) this.setFeature(tuple.getInt("Category_feature")); + //set label for field Feature + if( strict || tuple.getObject("feature_Identifier") != null) this.setFeature_Identifier(tuple.getString("feature_Identifier")); + if( tuple.getObject("Category_feature_Identifier") != null ) this.setFeature_Identifier(tuple.getString("Category_feature_Identifier")); + } + //org.apache.log4j.Logger.getLogger("test").debug("set "+this); + } + + + + + + @Override + public String toString() + { + return this.toString(false); + } + + public String toString(boolean verbose) + { + String result = "Category("; + result+= "id='" + getId()+"' "; + result+= " feature_id='" + getFeature_Id()+"' "; + result+= " feature_identifier='" + getFeature_Identifier()+"' "; + result += ");"; + return result; + + } + + /** + * Get the names of all public properties of Category. + */ + @Override + public java.util.Vector getFields(boolean skipAutoIds) + { + java.util.Vector fields = new java.util.Vector(); + if(!skipAutoIds) + { + fields.add("id"); + } + { + fields.add("feature_id"); + } + fields.add("feature_identifier"); + return fields; + } + + @Override + public java.util.Vector getFields() + { + return getFields(false); + } + + @Override + public String getIdField() + { + return "id"; + } + + + + @Override + public java.util.List getLabelFields() + { + java.util.List result = new java.util.ArrayList(); + result.add("id"); + return result; + } + + @Override + @Deprecated + public String getFields(String sep) + { + return ("" + + "id" +sep + + "feature" + ); + } + + @Override + public Object getIdValue() + { + return get(getIdField()); + } + + + @Override + public String getXrefIdFieldName(String fieldName) { + if (fieldName.equalsIgnoreCase("feature")) { + return "id"; + } + + return null; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { return false; } + if (obj == this) { return true; } + if (obj.getClass() != getClass()) { + return false; + } + Category rhs = (Category) obj; + return new org.apache.commons.lang.builder.EqualsBuilder() + .isEquals(); + } + + @Override + public int hashCode() { + int firstNumber = this.getClass().getName().hashCode(); + int secondNumber = this.getClass().getSimpleName().hashCode(); + if(firstNumber % 2 == 0) { + firstNumber += 1; + } + if(secondNumber % 2 == 0) { + secondNumber += 1; + } + + return new org.apache.commons.lang.builder.HashCodeBuilder(firstNumber, secondNumber) + .toHashCode(); + } + + + + @Override + @Deprecated + public String getValues(String sep) + { + java.io.StringWriter out = new java.io.StringWriter(); + { + Object valueO = getId(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = getFeature(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS); + } + return out.toString(); + } + + @Override + public Category create(org.molgenis.util.Tuple tuple) throws Exception + { + Category e = new Category(); + e.set(tuple); + return e; + } + + + +} + diff --git a/generated/test/java/org/molgenis/model/Characteristic.java b/generated/test/java/org/molgenis/model/Characteristic.java new file mode 100644 index 000000000..626e155b4 --- /dev/null +++ b/generated/test/java/org/molgenis/model/Characteristic.java @@ -0,0 +1,593 @@ + +/* File: org.molgenis/model/Characteristic.java + * Generator: org.molgenis.generators.DataTypeGen 4.0.0-testing + * + * THIS FILE HAS BEEN GENERATED, PLEASE DO NOT EDIT! + */ + + +package org.molgenis.model; + +/** + * Characteristic: . + * @author MOLGENIS generator + */ +@javax.persistence.Entity +//@org.hibernate.search.annotations.Indexed +@javax.persistence.Table(name = "Characteristic", uniqueConstraints={ @javax.persistence.UniqueConstraint( columnNames={ "Identifier" }), @javax.persistence.UniqueConstraint( columnNames={ "Name", "Identifier" } ) } +) + + +@javax.persistence.Inheritance(strategy=javax.persistence.InheritanceType.JOINED) +@javax.persistence.DiscriminatorColumn(name="DType", discriminatorType=javax.persistence.DiscriminatorType.STRING) +@javax.xml.bind.annotation.XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD) +//@EntityListeners({org.molgenis.model.db.CharacteristicEntityListener.class}) +public class Characteristic extends org.molgenis.util.AbstractEntity implements org.molgenis.model.Identifiable +{ + // fieldname constants + public final static String ID = "id"; + public final static String IDENTIFIER = "Identifier"; + public final static String NAME = "Name"; + public final static String __TYPE = "__Type"; + public final static String DESCRIPTION = "description"; + + //static methods + /** + * Shorthand for db.query(Characteristic.class). + */ + public static org.molgenis.framework.db.Query query(org.molgenis.framework.db.Database db) + { + return db.query(Characteristic.class); + } + + /** + * Shorthand for db.find(Characteristic.class, org.molgenis.framework.db.QueryRule ... rules). + */ + public static java.util.List find(org.molgenis.framework.db.Database db, org.molgenis.framework.db.QueryRule ... rules) throws org.molgenis.framework.db.DatabaseException + { + return db.find(Characteristic.class, rules); + } + + /** + * + */ + public static Characteristic findById(org.molgenis.framework.db.Database db, Integer id) throws org.molgenis.framework.db.DatabaseException + { + org.molgenis.framework.db.Query q = db.query(Characteristic.class); + q.eq(Characteristic.ID, id); + java.util.List result = q.find(); + if(result.size()>0) return result.get(0); + else return null; + } + + /** + * + */ + public static Characteristic findByIdentifier(org.molgenis.framework.db.Database db, String identifier) throws org.molgenis.framework.db.DatabaseException + { + org.molgenis.framework.db.Query q = db.query(Characteristic.class); + q.eq(Characteristic.IDENTIFIER, identifier); + java.util.List result = q.find(); + if(result.size()>0) return result.get(0); + else return null; + } + + /** + * + */ + public static Characteristic findByNameIdentifier(org.molgenis.framework.db.Database db, String name, String identifier) throws org.molgenis.framework.db.DatabaseException + { + org.molgenis.framework.db.Query q = db.query(Characteristic.class); + q.eq(Characteristic.NAME, name);q.eq(Characteristic.IDENTIFIER, identifier); + java.util.List result = q.find(); + if(result.size()>0) return result.get(0); + else return null; + } + + + // member variables (including setters.getters for interface) + + + //id[type=int] + @javax.persistence.Id @javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO) + @javax.persistence.Column(name="id", nullable=false) + @javax.xml.bind.annotation.XmlElement(name="id") + + //@javax.validation.constraints.NotNull + private Integer id = null; + + + //Identifier[type=string] +// @org.hibernate.search.annotations.Field(index=org.hibernate.search.annotations.Index.TOKENIZED, store=org.hibernate.search.annotations.Store.NO) + @javax.persistence.Column(name="Identifier", nullable=false) + @javax.xml.bind.annotation.XmlElement(name="identifier") + + + + @javax.validation.constraints.NotNull + private String identifier = null; + + + //assign name[type=string] +// @org.hibernate.search.annotations.Field(index=org.hibernate.search.annotations.Index.TOKENIZED, store=org.hibernate.search.annotations.Store.NO) + @javax.persistence.Column(name="Name", nullable=false) + @javax.xml.bind.annotation.XmlElement(name="name") + + + + @javax.validation.constraints.NotNull + private String name = null; + + + //Subtypes have to be set to allow searching[type=enum] + @javax.persistence.Column(name="DType", nullable=false) + @javax.xml.bind.annotation.XmlElement(name="__Type") + + + + @javax.validation.constraints.NotNull + private String __Type = null; + @javax.persistence.Transient + private String __Type_label = null; + @javax.persistence.Transient + private java.util.List __Type_options = new java.util.ArrayList(); + + + //description[type=text] +// @javax.persistence.Lob() + @javax.persistence.Column(name="description", length=16777216) + + + + private String description = null; + + //constructors + public Characteristic() + { + //set the type for a new instance + set__Type(this.getClass().getSimpleName()); + + //options for enum __Type + __Type_options.add(new org.molgenis.util.ValueLabel("Characteristic","Characteristic")); + __Type_options.add(new org.molgenis.util.ValueLabel("Feature","Feature")); + } + + //getters and setters + /** + * Get the id. + * @return id. + */ + @Override + public Integer getId() + { + return this.id; + } + + + /** + * Set the id. + * @param id + */ + @Override + public void setId( Integer id) + { + this.id = id; + } + + + + /** + * Get the Identifier. + * @return identifier. + */ + @Override + public String getIdentifier() + { + return this.identifier; + } + + @Deprecated + public String getIdentifier(org.molgenis.framework.db.Database db) + { + throw new UnsupportedOperationException(); + } + + /** + * Set the Identifier. + * @param identifier + */ + @Override + public void setIdentifier( String identifier) + { + + this.identifier = identifier; + } + + + + /** + * Get the assign name. + * @return name. + */ + @Override + public String getName() + { + return this.name; + } + + @Deprecated + public String getName(org.molgenis.framework.db.Database db) + { + throw new UnsupportedOperationException(); + } + + /** + * Set the assign name. + * @param name + */ + @Override + public void setName( String name) + { + + this.name = name; + } + + + + /** + * Get the Subtypes have to be set to allow searching. + * @return __Type. + */ + @Override + public String get__Type() + { + return this.__Type; + } + + @Deprecated + public String get__Type(org.molgenis.framework.db.Database db) + { + throw new UnsupportedOperationException(); + } + + /** + * Set the Subtypes have to be set to allow searching. + * @param __Type + */ + @Override + public void set__Type( String __Type) + { + + this.__Type = __Type; + } + + + /** + * Get tha label for enum __Type. + */ + @Override + public String get__TypeLabel() + { + return this.__Type_label; + } + + /** + * __Type is enum. This method returns all available enum options. + */ + @Override + public java.util.List get__TypeOptions() + { + return __Type_options; + } + + + /** + * Get the description. + * @return description. + */ + public String getDescription() + { + return this.description; + } + + @Deprecated + public String getDescription(org.molgenis.framework.db.Database db) + { + throw new UnsupportedOperationException(); + } + + /** + * Set the description. + * @param description + */ + public void setDescription( String description) + { + + this.description = description; + } + + + + + /** + * Generic getter. Get the property by using the name. + */ + @Override + public Object get(String name) + { + name = name.toLowerCase(); + if (name.toLowerCase().equals("id")) + return getId(); + if (name.toLowerCase().equals("identifier")) + return getIdentifier(); + if (name.toLowerCase().equals("name")) + return getName(); + if (name.toLowerCase().equals("__type")) + return get__Type(); + if(name.toLowerCase().equals("__type_label")) + return get__TypeLabel(); + if (name.toLowerCase().equals("description")) + return getDescription(); + return ""; + } + + @Override + public void validate() throws org.molgenis.framework.db.DatabaseException + { + if(this.getId() == null) throw new org.molgenis.framework.db.DatabaseException("required field id is null"); + if(this.getIdentifier() == null) throw new org.molgenis.framework.db.DatabaseException("required field identifier is null"); + if(this.getName() == null) throw new org.molgenis.framework.db.DatabaseException("required field name is null"); + if(this.get__Type() == null) throw new org.molgenis.framework.db.DatabaseException("required field __Type is null"); + } + + + + //@Implements + @Override + public void set( org.molgenis.util.Tuple tuple, boolean strict ) throws Exception + { + //optimization :-( + if(tuple instanceof org.molgenis.util.ResultSetTuple) + { + //set Id + this.setId(tuple.getInt("id")); + //set Identifier + this.setIdentifier(tuple.getString("Identifier")); + //set Name + this.setName(tuple.getString("Name")); + //set __Type + this.set__Type(tuple.getString("__Type")); + //set Description + this.setDescription(tuple.getString("description")); + } + else if(tuple != null) + { + //set Id + if( strict || tuple.getInt("id") != null) this.setId(tuple.getInt("id")); + if( tuple.getInt("Characteristic_id") != null) this.setId(tuple.getInt("Characteristic_id")); + //set Identifier + if( strict || tuple.getString("Identifier") != null) this.setIdentifier(tuple.getString("Identifier")); + if( tuple.getString("Characteristic_Identifier") != null) this.setIdentifier(tuple.getString("Characteristic_Identifier")); + //set Name + if( strict || tuple.getString("Name") != null) this.setName(tuple.getString("Name")); + if( tuple.getString("Characteristic_Name") != null) this.setName(tuple.getString("Characteristic_Name")); + //set __Type + if( strict || tuple.getString("__Type") != null) this.set__Type(tuple.getString("__Type")); + if( tuple.getString("Characteristic___Type") != null) this.set__Type(tuple.getString("Characteristic___Type")); + //set Description + if( strict || tuple.getString("description") != null) this.setDescription(tuple.getString("description")); + if( tuple.getString("Characteristic_description") != null) this.setDescription(tuple.getString("Characteristic_description")); + } + //org.apache.log4j.Logger.getLogger("test").debug("set "+this); + } + + + + + + @Override + public String toString() + { + return this.toString(false); + } + + public String toString(boolean verbose) + { + String result = "Characteristic("; + result+= "id='" + getId()+"' "; + result+= "identifier='" + getIdentifier()+"' "; + result+= "name='" + getName()+"' "; + result+= "__Type='" + get__Type()+"' "; + result+= "description='" + getDescription()+"'"; + result += ");"; + return result; + + } + + /** + * Get the names of all public properties of Characteristic. + */ + @Override + public java.util.Vector getFields(boolean skipAutoIds) + { + java.util.Vector fields = new java.util.Vector(); + if(!skipAutoIds) + { + fields.add("id"); + } + { + fields.add("identifier"); + } + { + fields.add("name"); + } + { + fields.add("__Type"); + } + { + fields.add("description"); + } + return fields; + } + + @Override + public java.util.Vector getFields() + { + return getFields(false); + } + + @Override + public String getIdField() + { + return "id"; + } + + + + @Override + public java.util.List getLabelFields() + { + java.util.List result = new java.util.ArrayList(); + result.add("Identifier"); + return result; + } + + @Override + @Deprecated + public String getFields(String sep) + { + return ("" + + "id" +sep + + "identifier" +sep + + "name" +sep + + "__Type" +sep + + "description" + ); + } + + @Override + public Object getIdValue() + { + return get(getIdField()); + } + + + @Override + public String getXrefIdFieldName(String fieldName) { + + return null; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { return false; } + if (obj == this) { return true; } + if (obj.getClass() != getClass()) { + return false; + } + Characteristic rhs = (Characteristic) obj; + return new org.apache.commons.lang.builder.EqualsBuilder() + //identifier + .append(identifier, rhs.getIdentifier()) + //name + .append(name, rhs.getName()) + //identifier + .append(identifier, rhs.getIdentifier()) + .isEquals(); + } + + @Override + public int hashCode() { + int firstNumber = this.getClass().getName().hashCode(); + int secondNumber = this.getClass().getSimpleName().hashCode(); + if(firstNumber % 2 == 0) { + firstNumber += 1; + } + if(secondNumber % 2 == 0) { + secondNumber += 1; + } + + return new org.apache.commons.lang.builder.HashCodeBuilder(firstNumber, secondNumber) + .append(identifier) + .append(name) + .append(identifier) + .toHashCode(); + } + + + + @Override + @Deprecated + public String getValues(String sep) + { + java.io.StringWriter out = new java.io.StringWriter(); + { + Object valueO = getId(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = getIdentifier(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = getName(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = get__Type(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = getDescription(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS); + } + return out.toString(); + } + + @Override + public Characteristic create(org.molgenis.util.Tuple tuple) throws Exception + { + Characteristic e = new Characteristic(); + e.set(tuple); + return e; + } + + + +} + diff --git a/generated/test/java/org/molgenis/model/Feature.java b/generated/test/java/org/molgenis/model/Feature.java new file mode 100644 index 000000000..e99ca2889 --- /dev/null +++ b/generated/test/java/org/molgenis/model/Feature.java @@ -0,0 +1,494 @@ + +/* File: org.molgenis/model/Feature.java + * Generator: org.molgenis.generators.DataTypeGen 4.0.0-testing + * + * THIS FILE HAS BEEN GENERATED, PLEASE DO NOT EDIT! + */ + + +package org.molgenis.model; + +/** + * Feature: . + * @author MOLGENIS generator + */ +@javax.persistence.Entity +//@org.hibernate.search.annotations.Indexed +@javax.persistence.Table(name = "Feature" +) + + +@javax.xml.bind.annotation.XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD) +//@EntityListeners({org.molgenis.model.db.FeatureEntityListener.class}) +public class Feature extends org.molgenis.model.Characteristic +{ + // fieldname constants + public final static String DATATYPE = "dataType"; + public final static String ID = "id"; + + //static methods + /** + * Shorthand for db.query(Feature.class). + */ + public static org.molgenis.framework.db.Query query(org.molgenis.framework.db.Database db) + { + return db.query(Feature.class); + } + + /** + * Shorthand for db.find(Feature.class, org.molgenis.framework.db.QueryRule ... rules). + */ + public static java.util.List find(org.molgenis.framework.db.Database db, org.molgenis.framework.db.QueryRule ... rules) throws org.molgenis.framework.db.DatabaseException + { + return db.find(Feature.class, rules); + } + + /** + * + */ + public static Feature findById(org.molgenis.framework.db.Database db, Integer id) throws org.molgenis.framework.db.DatabaseException + { + org.molgenis.framework.db.Query q = db.query(Feature.class); + q.eq(Feature.ID, id); + java.util.List result = q.find(); + if(result.size()>0) return result.get(0); + else return null; + } + + /** + * + */ + public static Feature findByIdentifier(org.molgenis.framework.db.Database db, String identifier) throws org.molgenis.framework.db.DatabaseException + { + org.molgenis.framework.db.Query q = db.query(Feature.class); + q.eq(Feature.IDENTIFIER, identifier); + java.util.List result = q.find(); + if(result.size()>0) return result.get(0); + else return null; + } + + /** + * + */ + public static Feature findByNameIdentifier(org.molgenis.framework.db.Database db, String name, String identifier) throws org.molgenis.framework.db.DatabaseException + { + org.molgenis.framework.db.Query q = db.query(Feature.class); + q.eq(Feature.NAME, name);q.eq(Feature.IDENTIFIER, identifier); + java.util.List result = q.find(); + if(result.size()>0) return result.get(0); + else return null; + } + + + // member variables (including setters.getters for interface) + + + //dataType[type=enum] + @javax.persistence.Column(name="dataType", nullable=false) + @javax.xml.bind.annotation.XmlElement(name="dataType") + + + + @javax.validation.constraints.NotNull + private String dataType = "string"; + @javax.persistence.Transient + private String dataType_label = null; + @javax.persistence.Transient + private java.util.List dataType_options = new java.util.ArrayList(); + + + //id[type=int] + + + //constructors + public Feature() + { + //set the type for a new instance + set__Type(this.getClass().getSimpleName()); + + //options for enum DataType + dataType_options.add(new org.molgenis.util.ValueLabel("xref","xref")); + dataType_options.add(new org.molgenis.util.ValueLabel("string","string")); + dataType_options.add(new org.molgenis.util.ValueLabel("nominal","nominal")); + dataType_options.add(new org.molgenis.util.ValueLabel("ordinal","ordinal")); + dataType_options.add(new org.molgenis.util.ValueLabel("date","date")); + dataType_options.add(new org.molgenis.util.ValueLabel("datetime","datetime")); + dataType_options.add(new org.molgenis.util.ValueLabel("int","int")); + dataType_options.add(new org.molgenis.util.ValueLabel("code","code")); + dataType_options.add(new org.molgenis.util.ValueLabel("image","image")); + dataType_options.add(new org.molgenis.util.ValueLabel("decimal","decimal")); + dataType_options.add(new org.molgenis.util.ValueLabel("bool","bool")); + dataType_options.add(new org.molgenis.util.ValueLabel("file","file")); + dataType_options.add(new org.molgenis.util.ValueLabel("log","log")); + dataType_options.add(new org.molgenis.util.ValueLabel("data","data")); + dataType_options.add(new org.molgenis.util.ValueLabel("exe","exe")); + } + + //getters and setters + /** + * Get the dataType. + * @return dataType. + */ + public String getDataType() + { + return this.dataType; + } + + @Deprecated + public String getDataType(org.molgenis.framework.db.Database db) + { + throw new UnsupportedOperationException(); + } + + /** + * Set the dataType. + * @param dataType + */ + public void setDataType( String dataType) + { + + this.dataType = dataType; + } + + + /** + * Get tha label for enum DataType. + */ + public String getDataTypeLabel() + { + return this.dataType_label; + } + + /** + * DataType is enum. This method returns all available enum options. + */ + public java.util.List getDataTypeOptions() + { + return dataType_options; + } + + + + + + + + /** + * Generic getter. Get the property by using the name. + */ + @Override + public Object get(String name) + { + name = name.toLowerCase(); + if (name.toLowerCase().equals("id")) + return getId(); + if (name.toLowerCase().equals("identifier")) + return getIdentifier(); + if (name.toLowerCase().equals("name")) + return getName(); + if (name.toLowerCase().equals("__type")) + return get__Type(); + if(name.toLowerCase().equals("__type_label")) + return get__TypeLabel(); + if (name.toLowerCase().equals("description")) + return getDescription(); + if (name.toLowerCase().equals("datatype")) + return getDataType(); + if(name.toLowerCase().equals("datatype_label")) + return getDataTypeLabel(); + return ""; + } + + @Override + public void validate() throws org.molgenis.framework.db.DatabaseException + { + if(this.getId() == null) throw new org.molgenis.framework.db.DatabaseException("required field id is null"); + if(this.getIdentifier() == null) throw new org.molgenis.framework.db.DatabaseException("required field identifier is null"); + if(this.getName() == null) throw new org.molgenis.framework.db.DatabaseException("required field name is null"); + if(this.get__Type() == null) throw new org.molgenis.framework.db.DatabaseException("required field __Type is null"); + if(this.getDataType() == null) throw new org.molgenis.framework.db.DatabaseException("required field dataType is null"); + } + + + + //@Implements + @Override + public void set( org.molgenis.util.Tuple tuple, boolean strict ) throws Exception + { + //optimization :-( + if(tuple instanceof org.molgenis.util.ResultSetTuple) + { + //set Id + this.setId(tuple.getInt("id")); + //set Identifier + this.setIdentifier(tuple.getString("Identifier")); + //set Name + this.setName(tuple.getString("Name")); + //set __Type + this.set__Type(tuple.getString("__Type")); + //set Description + this.setDescription(tuple.getString("description")); + //set DataType + this.setDataType(tuple.getString("dataType")); + } + else if(tuple != null) + { + //set Id + if( strict || tuple.getInt("id") != null) this.setId(tuple.getInt("id")); + if( tuple.getInt("Feature_id") != null) this.setId(tuple.getInt("Feature_id")); + //set Identifier + if( strict || tuple.getString("Identifier") != null) this.setIdentifier(tuple.getString("Identifier")); + if( tuple.getString("Feature_Identifier") != null) this.setIdentifier(tuple.getString("Feature_Identifier")); + //set Name + if( strict || tuple.getString("Name") != null) this.setName(tuple.getString("Name")); + if( tuple.getString("Feature_Name") != null) this.setName(tuple.getString("Feature_Name")); + //set __Type + if( strict || tuple.getString("__Type") != null) this.set__Type(tuple.getString("__Type")); + if( tuple.getString("Feature___Type") != null) this.set__Type(tuple.getString("Feature___Type")); + //set Description + if( strict || tuple.getString("description") != null) this.setDescription(tuple.getString("description")); + if( tuple.getString("Feature_description") != null) this.setDescription(tuple.getString("Feature_description")); + //set DataType + if( strict || tuple.getString("dataType") != null) this.setDataType(tuple.getString("dataType")); + if( tuple.getString("Feature_dataType") != null) this.setDataType(tuple.getString("Feature_dataType")); + } + //org.apache.log4j.Logger.getLogger("test").debug("set "+this); + } + + + + + + @Override + public String toString() + { + return this.toString(false); + } + + @Override + public String toString(boolean verbose) + { + String result = "Feature("; + result+= "id='" + getId()+"' "; + result+= "identifier='" + getIdentifier()+"' "; + result+= "name='" + getName()+"' "; + result+= "__Type='" + get__Type()+"' "; + result+= "description='" + getDescription()+"' "; + result+= "dataType='" + getDataType()+"'"; + result += ");"; + return result; + + } + + /** + * Get the names of all public properties of Feature. + */ + @Override + public java.util.Vector getFields(boolean skipAutoIds) + { + java.util.Vector fields = new java.util.Vector(); + if(!skipAutoIds) + { + fields.add("id"); + } + { + fields.add("identifier"); + } + { + fields.add("name"); + } + { + fields.add("__Type"); + } + { + fields.add("description"); + } + { + fields.add("dataType"); + } + return fields; + } + + @Override + public java.util.Vector getFields() + { + return getFields(false); + } + + @Override + public String getIdField() + { + return "id"; + } + + + + @Override + public java.util.List getLabelFields() + { + java.util.List result = new java.util.ArrayList(); + result.add("Identifier"); + return result; + } + + @Override + @Deprecated + public String getFields(String sep) + { + return ("" + + "id" +sep + + "identifier" +sep + + "name" +sep + + "__Type" +sep + + "description" +sep + + "dataType" + ); + } + + @Override + public Object getIdValue() + { + return get(getIdField()); + } + + + @Override + public String getXrefIdFieldName(String fieldName) { + + return null; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { return false; } + if (obj == this) { return true; } + if (obj.getClass() != getClass()) { + return false; + } + Feature rhs = (Feature) obj; + return new org.apache.commons.lang.builder.EqualsBuilder() + .appendSuper(super.equals(obj)) + .isEquals(); + } + + @Override + public int hashCode() { + int firstNumber = this.getClass().getName().hashCode(); + int secondNumber = this.getClass().getSimpleName().hashCode(); + if(firstNumber % 2 == 0) { + firstNumber += 1; + } + if(secondNumber % 2 == 0) { + secondNumber += 1; + } + + return new org.apache.commons.lang.builder.HashCodeBuilder(firstNumber, secondNumber) + .appendSuper(super.hashCode()) + .toHashCode(); + } + + + + @Override + @Deprecated + public String getValues(String sep) + { + java.io.StringWriter out = new java.io.StringWriter(); + { + Object valueO = getId(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = getIdentifier(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = getName(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = get__Type(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = getDescription(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS+sep); + } + { + Object valueO = getDataType(); + String valueS; + if (valueO != null) + valueS = valueO.toString(); + else + valueS = ""; + valueS = valueS.replaceAll("\r\n"," ").replaceAll("\n"," ").replaceAll("\r"," "); + valueS = valueS.replaceAll("\t"," ").replaceAll(sep," "); + out.write(valueS); + } + return out.toString(); + } + + @Override + public Feature create(org.molgenis.util.Tuple tuple) throws Exception + { + Feature e = new Feature(); + e.set(tuple); + return e; + } + +//1 + @javax.persistence.OneToMany(fetch=javax.persistence.FetchType.LAZY, mappedBy="feature"/*, cascade={javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}*/) + private java.util.Collection featureCategoryCollection = new java.util.ArrayList(); + + @javax.xml.bind.annotation.XmlTransient + public java.util.Collection getFeatureCategoryCollection() + { + return featureCategoryCollection; + } + + public void setFeatureCategoryCollection(java.util.Collection collection) + { + for (org.molgenis.model.Category category : collection) { + category.setFeature(this); + } + featureCategoryCollection = collection; + } + + +} + diff --git a/generated/test/java/org/molgenis/model/Identifiable.java b/generated/test/java/org/molgenis/model/Identifiable.java new file mode 100644 index 000000000..7a2ee86ef --- /dev/null +++ b/generated/test/java/org/molgenis/model/Identifiable.java @@ -0,0 +1,26 @@ + +/* File: org.molgenis/model/Identifiable.java + * Generator: org.molgenis.generators.DataTypeGen 4.0.0-testing + * + * THIS FILE HAS BEEN GENERATED, PLEASE DO NOT EDIT! + */ + + +package org.molgenis.model; + +/** + * Identifiable: . + * @author MOLGENIS generator + */ +public interface Identifiable extends org.molgenis.model.Autoid +{ + @Override + public Integer getId(); + @Override + public void setId(Integer id); + public String getIdentifier(); + public void setIdentifier(String identifier); + public String getName(); + public void setName(String name); +} + diff --git a/lib/spring-core-3.1.2.RELEASE.jar b/lib/spring-core-3.1.2.RELEASE.jar new file mode 100644 index 000000000..8d054dd97 Binary files /dev/null and b/lib/spring-core-3.1.2.RELEASE.jar differ diff --git a/lib/spring-test-3.1.2.RELEASE.jar b/lib/spring-test-3.1.2.RELEASE.jar new file mode 100644 index 000000000..da33e99e2 Binary files /dev/null and b/lib/spring-test-3.1.2.RELEASE.jar differ diff --git a/molgenis_code_style_eclipes.xml b/molgenis_code_style_eclipes.xml index acf9b86c5..8a8e148ca 100644 --- a/molgenis_code_style_eclipes.xml +++ b/molgenis_code_style_eclipes.xml @@ -73,7 +73,7 @@ value="16" /> + value="120" /> diff --git a/pom.xml b/pom.xml index 56355ea64..34892b36f 100644 --- a/pom.xml +++ b/pom.xml @@ -85,6 +85,11 @@ commons-lang 2.6 + + org.apache.commons + commons-lang3 + 3.0 + commons-fileupload commons-fileupload @@ -134,7 +139,15 @@ ganymed-ssh2 build210 - + + + + com.kenai.nbpwr + edu-umd-cs-findbugs-annotations + 1.3.2-201002241900 + compile + + org.testng @@ -151,7 +164,7 @@ org.mockito mockito-all - 1.8.4 + 1.9.0 test @@ -168,6 +181,11 @@ poi 3.8 + + org.apache.poi + poi-ooxml + 3.8 + net.sourceforge.jexcelapi jxl @@ -253,6 +271,25 @@ + + org.codehaus.mojo + build-helper-maven-plugin + + + add-test-source + generate-sources + + add-test-source + + + + src + generated/test/java + + + + + org.apache.maven.plugins maven-compiler-plugin @@ -263,16 +300,6 @@ ${endorsed.dir} - @@ -282,9 +309,7 @@ **/*ExcelReaderTest.java - **/*PbsTest.java **/*PlinkTest.java - **/*VcfReaderTest.java diff --git a/pom_minimal.xml b/pom_minimal.xml deleted file mode 100644 index 58859b4d0..000000000 --- a/pom_minimal.xml +++ /dev/null @@ -1,302 +0,0 @@ - - 4.0.0 - - org.molgenis - molgenis - 1.0-SNAPSHOT - jar - - molgenis - - - ${project.build.directory}/endorsed - UTF-8 - - - - - - - org.hibernate - hibernate-entitymanager - 3.6.9.Final - jar - - - org.hibernate - hibernate-validator - 4.2.0.Final - - - commons-dbcp - commons-dbcp - 1.4 - - - - commons-pool - commons-pool - 20030825.183949 - runtime - - - mysql - mysql-connector-java - 5.1.20 - provided - - - hsqldb - hsqldb - 1.8.0.10 - provided - - - - - - javax.servlet - servlet-api - 2.5 - provided - - - - - taglibs - standard - 1.1.2 - - - javax.servlet - jstl - 1.2 - runtime - - - - - commons-lang - commons-lang - 2.6 - - - commons-fileupload - commons-fileupload - 1.2 - - - org.apache.commons - commons-email - 1.2 - - - - - - org.quartz-scheduler - quartz - 1.8.6 - - - - - - org.freemarker - freemarker - 2.3.18 - - - - - ch.ethz.ganymed - ganymed-ssh2 - build210 - - - - - org.testng - testng - 6.4 - test - - - junit - junit - 4.10 - test - - - - - org.hibernate - hibernate-search - 3.4.1.Final - - - - - net.sourceforge.jexcelapi - jxl - 2.6.12 - - - - - javatar - javatar - 2.5 - - - - - org.apache.cxf - cxf-bundle-minimal - 2.5.2 - - - - - xerces - xercesImpl - 2.10.0 - - - - - net.sf.json-lib - json-lib - 2.4 - jdk15 - - - com.google.code.gson - gson - 2.2 - compile - - - - org.apache.ant - ant - 1.8.2 - - - - org.apache.ant - ant-apache-log4j - 1.8.2 - - - - - org.json - json - 20090211 - - - - - org.jboss.resteasy - tjws - 2.3.4.Final - - - - - src - src - - - - - src/ - - **/*.ftl - **/*.properties - **/*.index - org/molgenis/framework/ui/res/** - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.6 - 1.6 - - ${endorsed.dir} - - - **/*Test.java - **/Test*.java - - - **/*Test.java - **/Test*.java - - - - - maven-surefire-plugin - 2.6 - - - - **/*ExcelReaderTest.java - **/*PbsTest.java - **/*PlinkTest.java - **/*VcfReaderTest.java - - - - - org.apache.maven.plugins - maven-dependency-plugin - 2.1 - - - validate - - copy - - - ${endorsed.dir} - true - - - javax - javaee-endorsed-api - 6.0 - jar - - - - - - - - - - diff --git a/src/log4j.properties b/src/log4j.properties index ca1b8237b..1ae3c8537 100644 --- a/src/log4j.properties +++ b/src/log4j.properties @@ -1,5 +1,5 @@ # Set root category priority to INFO and its only appender to CONSOLE. -log4j.rootCategory=CONSOLE, R +log4j.rootCategory=WARN, CONSOLE, R log4j.logger.org.apache.commons.digester=ERROR log4j.logger.org.ajax4jsf=ERROR diff --git a/src/org/molgenis/Molgenis.java b/src/org/molgenis/Molgenis.java index 49cc207e1..bbe6e58cf 100644 --- a/src/org/molgenis/Molgenis.java +++ b/src/org/molgenis/Molgenis.java @@ -5,10 +5,11 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; -import java.io.FileReader; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.OutputStream; +import java.nio.charset.Charset; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; @@ -20,6 +21,7 @@ import java.util.Map; import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.BasicConfigurator; @@ -206,10 +208,10 @@ public Molgenis(MolgenisOptions options, Class 0) - { - this.options.delete_generated_folder = false; - } + // if (generatorsToUse != null && generatorsToUse.length > 0) + // { + // this.options.delete_generated_folder = false; + // } Logger.getLogger("freemarker.cache").setLevel(Level.INFO); logger.info("\nMOLGENIS version " + org.molgenis.Version.convertToString()); @@ -582,7 +584,8 @@ public void generate() throws Exception if (generatedFolder.exists() && options.delete_generated_folder) { logger.info("removing previous generated folder " + generatedFolder); - deleteContentOfDirectory(generatedFolder); + deleteContentOfDirectory(new File(options.output_src)); + deleteContentOfDirectory(new File(options.output_sql)); } List threads = new ArrayList(); @@ -591,6 +594,7 @@ public void generate() throws Exception Runnable runnable = new Runnable() { + @Override public void run() { try @@ -794,22 +798,27 @@ else if (answer.equals("n")) data_src.setUrl(options.db_uri); conn = data_src.getConnection(); - String create_tables_file = options.output_sql + File.separator + "create_tables.sql"; - logger.debug("using file " + create_tables_file); - // String create_tables_file = "generated" + File.separator + "sql" - // + File.separator + "create_tables.sql"; + String create_tables_file_str = options.output_sql + File.separator + "create_tables.sql"; // READ THE FILE StringBuilder create_tables_sqlBuilder = new StringBuilder(); try { - BufferedReader in = new BufferedReader(new FileReader(create_tables_file)); - String line; - while ((line = in.readLine()) != null) + BufferedReader in = new BufferedReader(new InputStreamReader( + new FileInputStream(create_tables_file_str), Charset.forName("UTF-8"))); + + try + { + String line; + while ((line = in.readLine()) != null) + { + create_tables_sqlBuilder.append(line).append('\n'); + } + } + finally { - create_tables_sqlBuilder.append(line).append('\n'); + IOUtils.closeQuietly(in); } - in.close(); } catch (IOException e) { @@ -824,13 +833,20 @@ else if (answer.equals("n")) // READ THE FILE try { - BufferedReader in = new BufferedReader(new FileReader(insert_metadata_file)); - String line; - while ((line = in.readLine()) != null) + BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream( + insert_metadata_file), Charset.forName("UTF-8"))); + try { - create_tables_sqlBuilder.append(line).append('\n'); + String line; + while ((line = in.readLine()) != null) + { + create_tables_sqlBuilder.append(line).append('\n'); + } + } + finally + { + IOUtils.closeQuietly(in); } - in.close(); } catch (IOException e) { @@ -885,23 +901,15 @@ else if (answer.equals("n")) } finally { - if (stmt != null) + try { - try - { - stmt.close(); - } - catch (SQLException e) - { - if (conn != null) - { - conn.close(); - } - } + if (stmt != null) stmt.close(); + } + finally + { + if (conn != null) conn.close(); } - } - } /** diff --git a/src/org/molgenis/MolgenisOptions.java b/src/org/molgenis/MolgenisOptions.java index 55abb2422..cd4c2337a 100644 --- a/src/org/molgenis/MolgenisOptions.java +++ b/src/org/molgenis/MolgenisOptions.java @@ -304,6 +304,9 @@ public enum LogTarget @Option(name = "hibernate_search_index_base", param = Option.Param.STRING, type = Type.OPTIONAL_ARGUMENT, usage = "Directory where the full text index is created. Default: /tmp/lucene") public String hibernate_search_index_base = "/tmp/lucene"; + @Option(name = "block_webspiders", param = Option.Param.BOOLEAN, type = Option.Type.OPTIONAL_ARGUMENT, usage = "Expert option: Block webcrawler user agents in FrontController") + public boolean block_webspiders = false; + // @Option(name = "force_lowercase_names", param = "force_lowercase_names", // type = Option.Type.REQUIRED_ARGUMENT, usage = // "Expert option. Wether all names should be converted to lowercase. Default: true" @@ -476,6 +479,7 @@ public MolgenisOptions(Properties properties) } } + @Override public String toString() { try diff --git a/src/org/molgenis/fieldtypes/BoolField.java b/src/org/molgenis/fieldtypes/BoolField.java index ab284ecea..a95e7ff69 100644 --- a/src/org/molgenis/fieldtypes/BoolField.java +++ b/src/org/molgenis/fieldtypes/BoolField.java @@ -75,16 +75,19 @@ public String getCppJavaPropertyType() return "Ljava/lang/Boolean;"; } + @Override public Class getJavaType() { return Boolean.class; } + @Override public Boolean getTypedValue(String value) { return Boolean.parseBoolean(value); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.BOOL; diff --git a/src/org/molgenis/fieldtypes/CharField.java b/src/org/molgenis/fieldtypes/CharField.java index ecd4b3148..da195b9fe 100644 --- a/src/org/molgenis/fieldtypes/CharField.java +++ b/src/org/molgenis/fieldtypes/CharField.java @@ -85,11 +85,13 @@ public Class getJavaType() return String.class; } + @Override public String getTypedValue(String value) throws ParseException { return value; } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.CHAR; diff --git a/src/org/molgenis/fieldtypes/DateField.java b/src/org/molgenis/fieldtypes/DateField.java index bdcc5914c..62a000f1c 100644 --- a/src/org/molgenis/fieldtypes/DateField.java +++ b/src/org/molgenis/fieldtypes/DateField.java @@ -89,16 +89,19 @@ public String getCppJavaPropertyType() return "Ljava/util/Date;"; } + @Override public Class getJavaType() { return Date.class; } + @Override public Date getTypedValue(String value) throws ParseException { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.DATE; diff --git a/src/org/molgenis/fieldtypes/DatetimeField.java b/src/org/molgenis/fieldtypes/DatetimeField.java index fc7452ecf..229faa721 100644 --- a/src/org/molgenis/fieldtypes/DatetimeField.java +++ b/src/org/molgenis/fieldtypes/DatetimeField.java @@ -89,16 +89,19 @@ public String getCppJavaPropertyType() return "Ljava/util/Date;"; } + @Override public Class getJavaType() { return Date.class; } + @Override public Date getTypedValue(String value) throws ParseException { return new SimpleDateFormat("yyyy.MM.dd G HH:mm:ss").parse(value); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.DATE_TIME; diff --git a/src/org/molgenis/fieldtypes/DecimalField.java b/src/org/molgenis/fieldtypes/DecimalField.java index 52eea543a..ee2591116 100644 --- a/src/org/molgenis/fieldtypes/DecimalField.java +++ b/src/org/molgenis/fieldtypes/DecimalField.java @@ -80,16 +80,19 @@ public String getCppPropertyType() throws MolgenisModelException return "double"; } + @Override public Class getJavaType() { return Date.class; } + @Override public Double getTypedValue(String value) throws ParseException { return Double.parseDouble(value); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.DECIMAL; diff --git a/src/org/molgenis/fieldtypes/EmailField.java b/src/org/molgenis/fieldtypes/EmailField.java index 495fd1452..822a39870 100644 --- a/src/org/molgenis/fieldtypes/EmailField.java +++ b/src/org/molgenis/fieldtypes/EmailField.java @@ -77,6 +77,7 @@ public String getCppJavaPropertyType() return "Ljava/lang/String;"; } + @Override public Class getJavaType() { return String.class; @@ -88,6 +89,7 @@ public String getTypedValue(String value) throws ParseException return value; } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.EMAIL; diff --git a/src/org/molgenis/fieldtypes/EnumField.java b/src/org/molgenis/fieldtypes/EnumField.java index 4e4e2e13e..02d7fc3b5 100644 --- a/src/org/molgenis/fieldtypes/EnumField.java +++ b/src/org/molgenis/fieldtypes/EnumField.java @@ -89,6 +89,7 @@ public Object getTypedValue(String value) throws ParseException throw new UnsupportedOperationException("Unable to cast enum type"); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.ENUM; diff --git a/src/org/molgenis/fieldtypes/FieldType.java b/src/org/molgenis/fieldtypes/FieldType.java index e3cce2ed8..6c2207ca8 100644 --- a/src/org/molgenis/fieldtypes/FieldType.java +++ b/src/org/molgenis/fieldtypes/FieldType.java @@ -152,6 +152,7 @@ public void setField(Field f) /** * The string value of this type, e.g. 'int' or 'xref'. */ + @Override public String toString() { return this.getClass().getSimpleName().replace("Field", "").toLowerCase(); diff --git a/src/org/molgenis/fieldtypes/FileField.java b/src/org/molgenis/fieldtypes/FileField.java index e2b247f9b..342c4f884 100644 --- a/src/org/molgenis/fieldtypes/FileField.java +++ b/src/org/molgenis/fieldtypes/FileField.java @@ -78,11 +78,13 @@ public String getCppJavaPropertyType() return "Ljava/lang/String;"; } + @Override public Class getJavaType() { return File.class; } + @Override public File getTypedValue(String value) throws ParseException { File file = new File(value); @@ -96,6 +98,7 @@ public File getTypedValue(String value) throws ParseException } } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.FILE; diff --git a/src/org/molgenis/fieldtypes/HyperlinkField.java b/src/org/molgenis/fieldtypes/HyperlinkField.java index 939b7e1b1..be229b3eb 100644 --- a/src/org/molgenis/fieldtypes/HyperlinkField.java +++ b/src/org/molgenis/fieldtypes/HyperlinkField.java @@ -77,6 +77,7 @@ public String getCppJavaPropertyType() return "Ljava/lang/String;"; } + @Override public Class getJavaType() { return String.class; @@ -88,6 +89,7 @@ public String getTypedValue(String value) throws ParseException return value; } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.HYPERLINK; diff --git a/src/org/molgenis/fieldtypes/IntField.java b/src/org/molgenis/fieldtypes/IntField.java index 14fb94d13..d4b6f5767 100644 --- a/src/org/molgenis/fieldtypes/IntField.java +++ b/src/org/molgenis/fieldtypes/IntField.java @@ -43,6 +43,7 @@ public String getOracleType() throws MolgenisModelException return "NUMBER (10,0)"; } + @Override public String getJavaSetterType() throws MolgenisModelException { return "Int"; @@ -84,16 +85,19 @@ public String getCppJavaPropertyType() return "Ljava/lang/Integer;"; } + @Override public Class getJavaType() { return Integer.class; } + @Override public Object getTypedValue(String value) throws ParseException { return Integer.parseInt(value); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.INT; diff --git a/src/org/molgenis/fieldtypes/ListField.java b/src/org/molgenis/fieldtypes/ListField.java index ca63010f1..91665199b 100644 --- a/src/org/molgenis/fieldtypes/ListField.java +++ b/src/org/molgenis/fieldtypes/ListField.java @@ -56,6 +56,7 @@ public String getHsqlType() return "LIST CANNOT BE IN SQL"; } + @Override public String getXsdType() { return ""; @@ -88,16 +89,19 @@ public String getCppJavaPropertyType() return "Ljava/util/List;"; } + @Override public Class getJavaType() { return java.util.List.class; } + @Override public java.util.List getTypedValue(String value) throws ParseException { return Arrays.asList(StringUtils.split(value, ",")); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.LIST; diff --git a/src/org/molgenis/fieldtypes/LongField.java b/src/org/molgenis/fieldtypes/LongField.java index 7414638af..3779e0940 100644 --- a/src/org/molgenis/fieldtypes/LongField.java +++ b/src/org/molgenis/fieldtypes/LongField.java @@ -79,16 +79,19 @@ public String getCppJavaPropertyType() return "Ljava/lang/Long;"; } + @Override public Class getJavaType() { return Long.class; } + @Override public Long getTypedValue(String value) throws ParseException { return Long.parseLong(value); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.LONG; diff --git a/src/org/molgenis/fieldtypes/MrefField.java b/src/org/molgenis/fieldtypes/MrefField.java index 9e90bb903..628baf9b8 100644 --- a/src/org/molgenis/fieldtypes/MrefField.java +++ b/src/org/molgenis/fieldtypes/MrefField.java @@ -124,6 +124,7 @@ public String getCppJavaPropertyType() throws MolgenisModelException return "Ljava/util/List;"; } + @Override public Class getJavaType() { return java.util.List.class; @@ -135,6 +136,7 @@ public Object getTypedValue(String value) throws ParseException throw new UnsupportedOperationException("Conversion of MRef not supported."); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.MREF; diff --git a/src/org/molgenis/fieldtypes/NSequenceField.java b/src/org/molgenis/fieldtypes/NSequenceField.java index 3bf03f69f..87e7ce9f5 100644 --- a/src/org/molgenis/fieldtypes/NSequenceField.java +++ b/src/org/molgenis/fieldtypes/NSequenceField.java @@ -79,6 +79,7 @@ public String getCppJavaPropertyType() return "Ljava/lang/String;"; } + @Override public Class getJavaType() { return String.class; @@ -90,6 +91,7 @@ public Object getTypedValue(String value) throws ParseException return value; } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.NSEQUENCE; diff --git a/src/org/molgenis/fieldtypes/StringField.java b/src/org/molgenis/fieldtypes/StringField.java index 4c1be6a50..b79425323 100644 --- a/src/org/molgenis/fieldtypes/StringField.java +++ b/src/org/molgenis/fieldtypes/StringField.java @@ -77,6 +77,7 @@ public String getCppJavaPropertyType() return "Ljava/lang/String;"; } + @Override public Class getJavaType() { return String.class; @@ -88,6 +89,7 @@ public String getTypedValue(String value) throws ParseException return value; } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.STRING; diff --git a/src/org/molgenis/fieldtypes/TextField.java b/src/org/molgenis/fieldtypes/TextField.java index b14ebc5ed..19d490763 100644 --- a/src/org/molgenis/fieldtypes/TextField.java +++ b/src/org/molgenis/fieldtypes/TextField.java @@ -86,11 +86,13 @@ public Class getJavaType() return String.class; } + @Override public String getTypedValue(String value) throws ParseException { return value; } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.TEXT; diff --git a/src/org/molgenis/fieldtypes/UnknownField.java b/src/org/molgenis/fieldtypes/UnknownField.java index 455c2fa53..99b80e720 100644 --- a/src/org/molgenis/fieldtypes/UnknownField.java +++ b/src/org/molgenis/fieldtypes/UnknownField.java @@ -93,6 +93,7 @@ public Object getTypedValue(String value) throws ParseException throw new UnsupportedOperationException("Attempted conversion of unknown type, value " + value); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.UNKNOWN; diff --git a/src/org/molgenis/fieldtypes/XrefField.java b/src/org/molgenis/fieldtypes/XrefField.java index 4c5df21f9..3067cb2d5 100644 --- a/src/org/molgenis/fieldtypes/XrefField.java +++ b/src/org/molgenis/fieldtypes/XrefField.java @@ -57,6 +57,7 @@ public String getHsqlType() throws MolgenisModelException return getFieldType(f.getXrefField()).getHsqlType(); } + @Override public String getXsdType() throws MolgenisModelException { return getFieldType(f.getXrefField()).getXsdType(); @@ -107,6 +108,7 @@ public Object getTypedValue(String value) throws ParseException throw new UnsupportedOperationException("Xref conversion not supported."); } + @Override public FieldTypeEnum getEnumType() { return FieldTypeEnum.XREF; diff --git a/src/org/molgenis/framework/db/AbstractDatabase.java b/src/org/molgenis/framework/db/AbstractDatabase.java index 0f00a3844..5a7629b91 100644 --- a/src/org/molgenis/framework/db/AbstractDatabase.java +++ b/src/org/molgenis/framework/db/AbstractDatabase.java @@ -97,7 +97,8 @@ public void find(Class entityClass, TupleWriter writer, Li count++; } - logger.debug(String.format("find(%s, writer) wrote %s lines", entityClass.getSimpleName(), count)); + if (logger.isDebugEnabled()) if (logger.isDebugEnabled()) logger.debug(String.format( + "find(%s, writer) wrote %s lines", entityClass.getSimpleName(), count)); writer.close(); } catch (Exception ex) @@ -139,7 +140,7 @@ public Query queryByExample(E entity) */ public boolean executeSql(String sql) throws DatabaseException { - logger.info("stmt.execute(" + sql + ")"); + if (logger.isDebugEnabled()) logger.debug("stmt.execute(" + sql + ")"); boolean success = false; Connection conn = getConnection(); Statement stmt = null; @@ -352,9 +353,11 @@ public int update(List entities, DatabaseAction dbAction, if (existingEntities.size() > 0 && (dbAction == DatabaseAction.ADD_UPDATE_EXISTING || dbAction == DatabaseAction.UPDATE || dbAction == DatabaseAction.UPDATE_IGNORE_MISSING)) { - logger.info("existingEntities[0] before: " + existingEntities.get(0).toString()); + if (logger.isDebugEnabled()) logger.debug("existingEntities[0] before: " + + existingEntities.get(0).toString()); matchByNameAndUpdateFields(existingEntities, entities); - logger.info("existingEntities[0] after: " + existingEntities.get(0).toString()); + if (logger.isDebugEnabled()) logger.debug("existingEntities[0] after: " + + existingEntities.get(0).toString()); } switch (dbAction) @@ -382,17 +385,17 @@ public int update(List entities, DatabaseAction dbAction, // will not test for existing entities before add // (so will ignore existingEntities) case ADD_IGNORE_EXISTING: - logger.debug("updateByName(List<" + entityName + "," + dbAction + ">) will skip " - + existingEntities.size() + " existing entities"); + if (logger.isDebugEnabled()) logger.debug("updateByName(List<" + entityName + "," + dbAction + + ">) will skip " + existingEntities.size() + " existing entities"); return add(newEntities); // will try to update(existingEntities) entities and // add(missingEntities) // so allows user to be sloppy in adding/updating case ADD_UPDATE_EXISTING: - logger.debug("updateByName(List<" + entityName + "," + dbAction + ">) will try to update " - + existingEntities.size() + " existing entities and add " + newEntities.size() - + " new entities"); + if (logger.isDebugEnabled()) logger.debug("updateByName(List<" + entityName + "," + dbAction + + ">) will try to update " + existingEntities.size() + " existing entities and add " + + newEntities.size() + " new entities"); return add(newEntities) + update(existingEntities); // update while testing for newEntities.size == 0 @@ -411,9 +414,9 @@ public int update(List entities, DatabaseAction dbAction, // those // (so only updates exsiting) case UPDATE_IGNORE_MISSING: - logger.debug("updateByName(List<" + entityName + "," + dbAction + ">) will try to update " - + existingEntities.size() + " existing entities and skip " + newEntities.size() - + " new entities"); + if (logger.isDebugEnabled()) logger.debug("updateByName(List<" + entityName + "," + dbAction + + ">) will try to update " + existingEntities.size() + " existing entities and skip " + + newEntities.size() + " new entities"); return update(existingEntities); // remove all elements in list, test if no elements are missing @@ -421,8 +424,8 @@ public int update(List entities, DatabaseAction dbAction, case REMOVE: if (newEntities.size() == 0) { - logger.debug("updateByName(List<" + entityName + "," + dbAction + ">) will try to remove " - + existingEntities.size() + " existing entities"); + if (logger.isDebugEnabled()) logger.debug("updateByName(List<" + entityName + "," + dbAction + + ">) will try to remove " + existingEntities.size() + " existing entities"); return remove(existingEntities); } else @@ -436,9 +439,9 @@ public int update(List entities, DatabaseAction dbAction, // exist in database // (so don't check the newEntities.size == 0) case REMOVE_IGNORE_MISSING: - logger.debug("updateByName(List<" + entityName + "," + dbAction + ">) will try to remove " - + existingEntities.size() + " existing entities and skip " + newEntities.size() - + " new entities"); + if (logger.isDebugEnabled()) logger.debug("updateByName(List<" + entityName + "," + dbAction + + ">) will try to remove " + existingEntities.size() + " existing entities and skip " + + newEntities.size() + " new entities"); return remove(existingEntities); // unexpected error @@ -480,6 +483,7 @@ public void matchByNameAndUpdateFields(List existingEntiti // as they are new entities, should include 'id' if (!(newEntity.get(field) == null)) { + // if(logger.isDebugEnabled()) // logger.debug("entity name = " + // newEntity.get("name") + " has null field: " + // field); @@ -664,11 +668,13 @@ public File getFilesource() return fileSource; } + @Override public Login getLogin() { return login; } + @Override public void setLogin(Login login) { this.login = login; @@ -721,7 +727,7 @@ public synchronized List sql(String sql, QueryRule... rules) throws Datab String allSql = sql + (rules.length > 0 ? JDBCQueryGernatorUtil.createWhereSql(null, false, true, rules) : ""); - logger.info("executeQuery: " + allSql); + if (logger.isDebugEnabled()) logger.debug("executeQuery: " + allSql); Connection con = getConnection(); stmt = con.createStatement(); @@ -767,7 +773,7 @@ public synchronized List sql(String sql, QueryRule... rules) throws Datab stmt.close(); stmt = null; - logger.info("sql(" + allSql + ")" + tuples.size() + " objects found"); + if (logger.isDebugEnabled()) logger.debug("sql(" + allSql + ")" + tuples.size() + " objects found"); return tuples; } catch (Exception e) @@ -803,6 +809,7 @@ public List search(Class entityClass, String searchStri return find(entityClass, new QueryRule(Operator.SEARCH, searchString)); } + @Override public List load(Class superClass, List entities) throws DatabaseException { diff --git a/src/org/molgenis/framework/db/AbstractMapper.java b/src/org/molgenis/framework/db/AbstractMapper.java index aa5c5df8c..ef0090e4a 100644 --- a/src/org/molgenis/framework/db/AbstractMapper.java +++ b/src/org/molgenis/framework/db/AbstractMapper.java @@ -8,7 +8,6 @@ import java.util.List; import org.apache.log4j.Logger; -import org.molgenis.framework.db.jdbc.AbstractJDBCMapper; import org.molgenis.util.Entity; import org.molgenis.util.Tuple; import org.molgenis.util.TupleReader; @@ -23,7 +22,7 @@ public abstract class AbstractMapper implements Mapper public static final int BATCH_SIZE = 500; /** log messages */ - private static transient final Logger logger = Logger.getLogger(AbstractJDBCMapper.class.getSimpleName()); + private static final Logger logger = Logger.getLogger(AbstractMapper.class); public AbstractMapper(Database database) { @@ -39,6 +38,7 @@ public Database getDatabase() /** * helper method create a new instance of E */ + @Override public abstract E create(); /** @@ -49,6 +49,7 @@ public Database getDatabase() * of the list * @return list */ + @Override public abstract List createList(int size); /** @@ -98,6 +99,7 @@ public Database getDatabase() * @throws DatabaseException * @throws ParseException */ + @Override public abstract void resolveForeignKeys(List entities) throws DatabaseException, ParseException; /** @@ -138,6 +140,7 @@ public int add(E entity) throws DatabaseException return add(entities); } + @Override public int add(List entities) throws DatabaseException { // count rows updated diff --git a/src/org/molgenis/framework/db/CsvToDatabase.java b/src/org/molgenis/framework/db/CsvToDatabase.java index 73b3cd6b6..e1dce9e89 100644 --- a/src/org/molgenis/framework/db/CsvToDatabase.java +++ b/src/org/molgenis/framework/db/CsvToDatabase.java @@ -7,20 +7,19 @@ import java.util.List; import java.util.Map; +import org.apache.log4j.Logger; import org.molgenis.framework.db.Database.DatabaseAction; import org.molgenis.util.CsvFileReader; import org.molgenis.util.CsvReader; import org.molgenis.util.Entity; import org.molgenis.util.Tuple; -import freemarker.log.Logger; - /** will be moved to generic solution */ public abstract class CsvToDatabase { protected static int BATCH_SIZE = 10000; - protected transient final Logger logger = Logger.getLogger(this.getClass().getSimpleName()); + protected static final Logger logger = Logger.getLogger(CsvToDatabase.class); /** * wrapper to use int inside anonymous classes (requires final, so cannot diff --git a/src/org/molgenis/framework/db/Database.java b/src/org/molgenis/framework/db/Database.java index 037d77e0e..cdd17bced 100644 --- a/src/org/molgenis/framework/db/Database.java +++ b/src/org/molgenis/framework/db/Database.java @@ -16,6 +16,7 @@ */ package org.molgenis.framework.db; +import java.io.Closeable; import java.io.File; import java.sql.Connection; import java.text.ParseException; @@ -39,7 +40,7 @@ * operation (ensuring all actions are complete succesfully or if it fails * halfway, it gets undone). */ -public interface Database +public interface Database extends Closeable { /** * Create tables. @@ -415,13 +416,6 @@ public int update(List entities, DatabaseAction dbAction, */ public File getFilesource() throws Exception; - /** - * Stop using the database. Optional method. - * - * @throws DatabaseException - */ - public void close() throws DatabaseException; - /** * Return a list of the classes of the entities managed. * diff --git a/src/org/molgenis/framework/db/Query.java b/src/org/molgenis/framework/db/Query.java index cec6e4bd5..21091caaa 100644 --- a/src/org/molgenis/framework/db/Query.java +++ b/src/org/molgenis/framework/db/Query.java @@ -257,9 +257,6 @@ public void find(TupleWriter writer, boolean skipAutoIds) throws DatabaseExcepti /** Retrieve array of current QueryRules in this query */ public QueryRule[] getRules(); - /** Pretty print the query rules */ - public String toString(); - /** Add rules to the query */ public void addRules(QueryRule... addRules); diff --git a/src/org/molgenis/framework/db/QueryImp.java b/src/org/molgenis/framework/db/QueryImp.java index 95f56f656..4f0db2d45 100644 --- a/src/org/molgenis/framework/db/QueryImp.java +++ b/src/org/molgenis/framework/db/QueryImp.java @@ -86,6 +86,7 @@ public Query subquery(String field, String sql) return this; } + @Override public Query subQuery(SubQueryRule subQueryRule) { rules.add(subQueryRule); @@ -326,6 +327,7 @@ public Query example(Entity example) return this; } + @Override public void removeRule(QueryRule ruleToBeRemoved) { try diff --git a/src/org/molgenis/framework/db/QueryRule.java b/src/org/molgenis/framework/db/QueryRule.java index 33f3cf786..db6fbb99d 100644 --- a/src/org/molgenis/framework/db/QueryRule.java +++ b/src/org/molgenis/framework/db/QueryRule.java @@ -363,8 +363,8 @@ public String toString() } else { - strBuilder.append(this.getField() == null ? "" : (this.getField() + " ")); - strBuilder.append(this.getOperator()).append(value == null ? "" : " '" + value + "'"); + strBuilder.append(this.getField() == null ? " " : (this.getField() + " ")); + strBuilder.append(this.getOperator()).append(value == null ? " " : " '" + value + "'"); } return strBuilder.toString(); } diff --git a/src/org/molgenis/framework/db/jdbc/AbstractDataSourceWrapper.java b/src/org/molgenis/framework/db/jdbc/AbstractDataSourceWrapper.java index 2cfe84f7b..ffbfc4e66 100644 --- a/src/org/molgenis/framework/db/jdbc/AbstractDataSourceWrapper.java +++ b/src/org/molgenis/framework/db/jdbc/AbstractDataSourceWrapper.java @@ -11,8 +11,9 @@ public abstract class AbstractDataSourceWrapper implements DataSourceWrapper { - private static transient final Logger logger = Logger.getLogger(AbstractDataSourceWrapper.class.getSimpleName()); + private static final Logger logger = Logger.getLogger(AbstractDataSourceWrapper.class); + @Override public Connection getConnection() throws NamingException, SQLException { return this.getDataSource().getConnection(); diff --git a/src/org/molgenis/framework/db/jdbc/AbstractJDBCMapper.java b/src/org/molgenis/framework/db/jdbc/AbstractJDBCMapper.java index 32109a529..645a9516f 100644 --- a/src/org/molgenis/framework/db/jdbc/AbstractJDBCMapper.java +++ b/src/org/molgenis/framework/db/jdbc/AbstractJDBCMapper.java @@ -21,6 +21,7 @@ import org.molgenis.framework.db.Query; import org.molgenis.framework.db.QueryRule; import org.molgenis.framework.db.QueryRule.Operator; +import org.molgenis.model.MolgenisModelException; import org.molgenis.model.elements.Field; import org.molgenis.util.Entity; import org.molgenis.util.Tuple; @@ -35,7 +36,7 @@ public abstract class AbstractJDBCMapper extends AbstractMapper { /** log messages */ - public static transient final Logger logger = Logger.getLogger(AbstractJDBCMapper.class.getSimpleName()); + private static final Logger logger = Logger.getLogger(AbstractJDBCMapper.class); public AbstractJDBCMapper(Database database) { @@ -155,11 +156,13 @@ public void getGeneratedKeys(List entities, Statement stmt, int fro /** * Translate object field name to table fieldname */ + @Override public abstract String getTableFieldName(String fieldName); /** * Retrieve the type of the field */ + @Override public abstract FieldType getFieldType(String fieldName); /** @@ -192,6 +195,7 @@ public void getGeneratedKeys(List entities, Statement stmt, int fro */ protected abstract QueryRule rewriteMrefRule(Database db, QueryRule user_rule) throws DatabaseException; + @Override public int count(QueryRule... rules) throws DatabaseException { try @@ -209,6 +213,7 @@ public int count(QueryRule... rules) throws DatabaseException } } + @Override public List find(QueryRule... rules) throws DatabaseException { try @@ -449,7 +454,7 @@ else if (rule.getOperator() == QueryRule.Operator.SEARCH) where_clause.append(")"); } - catch (Exception e) + catch (MolgenisModelException e) { throw new DatabaseException(e); } diff --git a/src/org/molgenis/framework/db/jdbc/JDBCDatabase.java b/src/org/molgenis/framework/db/jdbc/JDBCDatabase.java index 989f88d89..01263f9a8 100644 --- a/src/org/molgenis/framework/db/jdbc/JDBCDatabase.java +++ b/src/org/molgenis/framework/db/jdbc/JDBCDatabase.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.Charset; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; @@ -48,7 +49,7 @@ public class JDBCDatabase extends AbstractDatabase { /** Logger for this database */ - private static final transient Logger logger = Logger.getLogger(JDBCDatabase.class.getSimpleName()); + private static final Logger logger = Logger.getLogger(JDBCDatabase.class); /** * Construct a JDBCDatabase using this connection alone. There is no @@ -213,7 +214,7 @@ public boolean inTx() return inTransaction; } - // @Override + @Override public void commitTx() throws DatabaseException { try @@ -261,7 +262,7 @@ public void rollbackTx() throws DatabaseException } @Override - public void close() throws DatabaseException + public void close() throws IOException { closeConnection(); } @@ -292,6 +293,7 @@ public JDBCDatabase(DataSourceWrapper source) } /** open the connection (if not already) */ + @Override public Connection getConnection() throws DatabaseException { if (source == null) @@ -395,8 +397,7 @@ public static void closeStatement(Statement stmt) @Override public void flush() { - // TODO Auto-generated method stub - + // noop } @Override @@ -433,27 +434,23 @@ private void executeSqlFile(String filename) throws DatabaseException StringBuilder create_tables_sqlBuilder = new StringBuilder(); InputStream fis = this.getClass().getResourceAsStream(filename); - BufferedReader in = new BufferedReader(new InputStreamReader(fis)); - String line; - while ((line = in.readLine()) != null) + BufferedReader in = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8"))); + try { - create_tables_sqlBuilder.append(line).append('\n'); + String line; + while ((line = in.readLine()) != null) + { + create_tables_sqlBuilder.append(line).append('\n'); + } + } + finally + { + in.close(); } - in.close(); - stmt = conn.createStatement(); - int i = 0; for (String command : create_tables_sqlBuilder.toString().split(";")) { - if (command.trim().length() > 0) - { - stmt.executeUpdate(command + ";"); - if (i++ % 10 == 0) - { - // System.out.print("."); - } - - } + if (command.trim().length() > 0) stmt.executeUpdate(command + ";"); } } catch (Exception e) diff --git a/src/org/molgenis/framework/db/jpa/AbstractJpaMapper.java b/src/org/molgenis/framework/db/jpa/AbstractJpaMapper.java index 52e4a24c8..80f471521 100644 --- a/src/org/molgenis/framework/db/jpa/AbstractJpaMapper.java +++ b/src/org/molgenis/framework/db/jpa/AbstractJpaMapper.java @@ -52,6 +52,7 @@ public Class getEntityClass() private final static Logger logger = Logger.getLogger(AbstractJpaMapper.class); + @Override public int count(QueryRule... rules) throws DatabaseException { TypedQuery query = JPAQueryGeneratorUtil.createCount(getDatabase(), getEntityClass(), this, getDatabase() @@ -68,6 +69,7 @@ public List find(QueryRule... rules) throws DatabaseException return query.getResultList(); } + @Override public E findById(Object id) { return getDatabase().getEntityManager().find(getEntityClass(), id); diff --git a/src/org/molgenis/framework/db/jpa/JpaDatabase.java b/src/org/molgenis/framework/db/jpa/JpaDatabase.java index 714940852..2ae39868b 100644 --- a/src/org/molgenis/framework/db/jpa/JpaDatabase.java +++ b/src/org/molgenis/framework/db/jpa/JpaDatabase.java @@ -1,5 +1,6 @@ package org.molgenis.framework.db.jpa; +import java.io.IOException; import java.sql.Connection; import java.util.HashMap; import java.util.List; @@ -178,15 +179,15 @@ public void rollbackTx() throws DatabaseException } @Override - public void close() throws DatabaseException + public void close() throws IOException { try { em.close(); } - catch (Exception e) + catch (IllegalStateException e) { - throw new DatabaseException(e); + throw new IOException(e); } } diff --git a/src/org/molgenis/framework/db/jpa/JpaFramework.java b/src/org/molgenis/framework/db/jpa/JpaFramework.java index 88f4be19c..8147ec3df 100644 --- a/src/org/molgenis/framework/db/jpa/JpaFramework.java +++ b/src/org/molgenis/framework/db/jpa/JpaFramework.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.molgenis.framework.db.jpa; import java.sql.Connection; diff --git a/src/org/molgenis/framework/db/jpa/JpaUtil.java b/src/org/molgenis/framework/db/jpa/JpaUtil.java index 2fa4555b9..82adf52ce 100644 --- a/src/org/molgenis/framework/db/jpa/JpaUtil.java +++ b/src/org/molgenis/framework/db/jpa/JpaUtil.java @@ -2,7 +2,9 @@ import java.io.BufferedReader; import java.io.File; -import java.io.FileReader; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.nio.charset.Charset; import java.util.Map; import javax.persistence.EntityManager; @@ -12,7 +14,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.molgenis.framework.db.Database; -import org.molgenis.util.HandleException; +import org.molgenis.util.ExceptionHandler; public class JpaUtil { @@ -116,7 +118,7 @@ public static void executeSQLScript(final File file, final Database db) BufferedReader br = null; try { - br = new BufferedReader(new FileReader(file)); + br = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8"))); EntityManager em = db.getEntityManager(); em.getTransaction().begin(); @@ -143,11 +145,11 @@ public static void executeSQLScript(final File file, final Database db) } catch (Exception e) { - HandleException.handle(e, logger); + ExceptionHandler.handle(e, logger); } finally { IOUtils.closeQuietly(br); } } -} \ No newline at end of file +} diff --git a/src/org/molgenis/framework/db/paging/AbstractPager.java b/src/org/molgenis/framework/db/paging/AbstractPager.java index 9c93c9220..a1848bb17 100644 --- a/src/org/molgenis/framework/db/paging/AbstractPager.java +++ b/src/org/molgenis/framework/db/paging/AbstractPager.java @@ -28,10 +28,6 @@ protected enum State FIRST, PREV, NEXT, LAST, UPTODATE, REFRESH; } - /** Logger */ - // private Logger logger = - // Logger.getLogger(this.getClass().getSimpleName()); - /** Class of this pager */ private Class entityClass; @@ -60,7 +56,7 @@ protected enum State private List filters = new ArrayList(); /** Logger **/ - private final static transient Logger logger = Logger.getLogger(AbstractPager.class.getSimpleName()); + private final static Logger logger = Logger.getLogger(AbstractPager.class); /** * @param entityClass @@ -223,12 +219,11 @@ public void setOffset(int offset) @Override public void addFilter(QueryRule filter) throws DatabaseException { - if (filter == null) throw new DatabaseException("cannot add null filter"); - - filters.add(filter); - // pagingState = State.FIRST; - // FIXME: would be great if we kept the original object!!! - logger.debug("added filter '" + filter + "'."); + if (filter != null) + { + filters.add(filter); + logger.debug("added filter: " + filter); + } } @Override @@ -240,16 +235,23 @@ public QueryRule[] getFilters() @Override public void removeFilter(int index) throws DatabaseException { - logger.debug("removed filter: " + filters.get(index)); - filters.remove(index); - // pagingState = State.FIRST; + if (index >= 0 && index < filters.size()) + { + filters.remove(index); + logger.debug("removed filter: " + filters.get(index)); + } } @Override public void resetFilters() { - filters = new ArrayList(); - // pagingState = State.FIRST; + resetFilters(new ArrayList()); + } + + @Override + public void resetFilters(List filters) + { + this.filters = filters; } // PROTECTED HELPERS @@ -264,6 +266,7 @@ protected void reloadPage(Database db, QueryRule... rules) throws DatabaseExcept } /** will check whether it is dirty, the refresh */ + @Override public abstract void refresh(Database db) throws DatabaseException; protected State getPagingState() diff --git a/src/org/molgenis/framework/db/paging/DatabasePager.java b/src/org/molgenis/framework/db/paging/DatabasePager.java index 0798d5ac6..18e814193 100644 --- a/src/org/molgenis/framework/db/paging/DatabasePager.java +++ b/src/org/molgenis/framework/db/paging/DatabasePager.java @@ -12,9 +12,9 @@ /** * Page through the entities in a Database. *

- * Very usefull if one doesn't want to retrieve all data at once into memory. + * Very useful if one doesn't want to retrieve all data at once into memory. * Instead, one can just iterate through the data while leaving the bulk of data - * savely and efficiently on disk. The DatabasePager takes care of (re)querying + * safely and efficiently on disk. The DatabasePager takes care of (re)querying * the Database. *

* TODO: add a method to go to a certain page. @@ -182,6 +182,13 @@ public interface DatabasePager extends Serializable */ public void resetFilters(); + /** + * Reset the filters to the given filters + * + * @param filters + */ + public void resetFilters(List filters); + /** * Retrieve the current number of entities in the database, after filtering. * diff --git a/src/org/molgenis/framework/db/paging/LimitOffsetPager.java b/src/org/molgenis/framework/db/paging/LimitOffsetPager.java index a4066532b..6bf79b063 100644 --- a/src/org/molgenis/framework/db/paging/LimitOffsetPager.java +++ b/src/org/molgenis/framework/db/paging/LimitOffsetPager.java @@ -25,7 +25,7 @@ public class LimitOffsetPager extends AbstractPager { private static final long serialVersionUID = -1859965580920588085L; - private static transient final Logger logger = Logger.getLogger(LimitOffsetPager.class.getSimpleName()); + private static final Logger logger = Logger.getLogger(LimitOffsetPager.class); public LimitOffsetPager(Class entityClass, String defaultOrderByField) throws DatabaseException { @@ -41,6 +41,7 @@ public LimitOffsetPager(Class entityClass, String defaultOrderByField) throws * * @throws ParseException */ + @Override public void refresh(Database db) throws DatabaseException { // don't use getters and setters here, or everything refreshes like diff --git a/src/org/molgenis/framework/db/paging/PrimaryKeyPager.java b/src/org/molgenis/framework/db/paging/PrimaryKeyPager.java index dca8cb47a..56959771a 100644 --- a/src/org/molgenis/framework/db/paging/PrimaryKeyPager.java +++ b/src/org/molgenis/framework/db/paging/PrimaryKeyPager.java @@ -27,7 +27,7 @@ public class PrimaryKeyPager extends AbstractPager { private static final long serialVersionUID = 1707494068232123242L; - private static final transient Logger logger = Logger.getLogger(PrimaryKeyPager.class.getSimpleName()); + private static final Logger logger = Logger.getLogger(PrimaryKeyPager.class); /** * Constructor. @@ -63,6 +63,7 @@ public PrimaryKeyPager(Class entityClass, String primaryKeyField) throws Data * that at least the primary key is used to sort the data in the database * underlying the paging. */ + @Override public void refresh(Database db) throws DatabaseException { // don't use getters and setters!!! these will call refresh resulting in diff --git a/src/org/molgenis/framework/security/SimpleLogin.java b/src/org/molgenis/framework/security/SimpleLogin.java index 415130fd0..353f353b3 100644 --- a/src/org/molgenis/framework/security/SimpleLogin.java +++ b/src/org/molgenis/framework/security/SimpleLogin.java @@ -30,6 +30,7 @@ public void reload(Database db) { } + @Override public void logout(Database db) { } diff --git a/src/org/molgenis/framework/server/JTextAreaAppender.java b/src/org/molgenis/framework/server/JTextAreaAppender.java index 28b93a8ca..1317af2da 100644 --- a/src/org/molgenis/framework/server/JTextAreaAppender.java +++ b/src/org/molgenis/framework/server/JTextAreaAppender.java @@ -20,6 +20,7 @@ public JTextAreaAppender(JTextArea jtext) this.jtext = jtext; } + @Override protected void append(LoggingEvent event) { jtext.append(layout.format(event)); @@ -40,12 +41,14 @@ protected void append(LoggingEvent event) jtext.setCaretPosition(jtext.getText().length()); } + @Override public boolean requiresLayout() { // TODO Auto-generated method stub return true; } + @Override public void close() { if (closed) return; diff --git a/src/org/molgenis/framework/server/MolgenisFrontController.java b/src/org/molgenis/framework/server/MolgenisFrontController.java index d1f6d1445..759c0764f 100644 --- a/src/org/molgenis/framework/server/MolgenisFrontController.java +++ b/src/org/molgenis/framework/server/MolgenisFrontController.java @@ -62,6 +62,7 @@ public abstract class MolgenisFrontController extends HttpServlet implements Mol public abstract void createLogin(MolgenisRequest request) throws Exception; // the one and only service() used in the molgenis app + @Override public void service(HttpServletRequest request, HttpServletResponse response) { try @@ -97,16 +98,20 @@ public void handleRequest(MolgenisRequest request, MolgenisResponse response) th { HttpServletRequest req = request.getRequest(); - // block spiders - String userAgent = req.getHeader("User-Agent"); - for (String spider : new String[] - { "Googlebot", "Yammybot", "Openbot", "Yahoo", "Slurp", "msnbot", "ia_archiver", "Lycos", "Scooter", - "AltaVista", "Teoma", "Gigabot", "Googlebot-Mobile" }) + if (usedOptions.block_webspiders) { - if (userAgent.contains(spider)) + // block spiders (webcrawlers) if the option has been set (default + // is false) + String userAgent = req.getHeader("User-Agent"); + for (String spider : new String[] + { "Googlebot", "Yammybot", "Openbot", "Yahoo", "Slurp", "msnbot", "ia_archiver", "Lycos", "Scooter", + "AltaVista", "Teoma", "Gigabot", "Googlebot-Mobile" }) { - response.response.sendError(403, "This page is forbidden for spiders."); - return; + if (userAgent.contains(spider)) + { + response.response.sendError(403, "This page is forbidden for spiders."); + return; + } } } @@ -236,11 +241,11 @@ protected void manageConnection(UUID connId, long startTime) throws DatabaseExce } } - protected void createLogger(MolgenisOptions mo) throws ServletException + protected void createLogger() throws ServletException { try { - if (StringUtils.isEmpty(mo.log4j_properties_uri)) + if (StringUtils.isEmpty(usedOptions.log4j_properties_uri)) { // get logger and remove appenders added by classpath JARs. (= // evil) @@ -251,27 +256,27 @@ protected void createLogger(MolgenisOptions mo) throws ServletException PatternLayout pattern = new PatternLayout("%-4r %-5p [%c] %m%n"); // get the level from the molgenis options - rootLogger.setLevel(mo.log_level); + rootLogger.setLevel(usedOptions.log_level); // console appender - if (mo.log_target.equals(MolgenisOptions.LogTarget.CONSOLE)) + if (usedOptions.log_target.equals(MolgenisOptions.LogTarget.CONSOLE)) { rootLogger.addAppender(new ConsoleAppender(pattern)); - System.out.println("Log4j CONSOLE appender added log level " + mo.log_level); + System.out.println("Log4j CONSOLE appender added log level " + usedOptions.log_level); } // file appender - if (mo.log_target.equals(MolgenisOptions.LogTarget.FILE)) + if (usedOptions.log_target.equals(MolgenisOptions.LogTarget.FILE)) { RollingFileAppender fa = new RollingFileAppender(pattern, "logger.out"); fa.setMaximumFileSize(100000000); // 100MB rootLogger.addAppender(fa); - System.out.println("Log4j FILE appender added with level " + mo.log_level + ", writing to: " - + new File(fa.getFile()).getAbsolutePath()); + System.out.println("Log4j FILE appender added with level " + usedOptions.log_level + + ", writing to: " + new File(fa.getFile()).getAbsolutePath()); } // add no appender at all - if (mo.log_target.equals(MolgenisOptions.LogTarget.OFF)) + if (usedOptions.log_target.equals(MolgenisOptions.LogTarget.OFF)) { System.out.println("Log4j logger turned off"); } @@ -279,7 +284,7 @@ protected void createLogger(MolgenisOptions mo) throws ServletException else { ClassLoader loader = this.getClass().getClassLoader(); - URL urlLog4jProp = loader.getResource(mo.log4j_properties_uri); + URL urlLog4jProp = loader.getResource(usedOptions.log4j_properties_uri); if (urlLog4jProp == null) { System.out diff --git a/src/org/molgenis/framework/server/MolgenisRequest.java b/src/org/molgenis/framework/server/MolgenisRequest.java index a199c38ea..f3f31c0ae 100644 --- a/src/org/molgenis/framework/server/MolgenisRequest.java +++ b/src/org/molgenis/framework/server/MolgenisRequest.java @@ -70,6 +70,7 @@ public void setAppLocation(String appLocation) * Special toString for MolgenisRequest Will break off large values, and * hide passwords */ + @Override public String toString() { if (this.getNrColumns() == 0) return "NONE"; diff --git a/src/org/molgenis/framework/server/ResourceServlet.java b/src/org/molgenis/framework/server/ResourceServlet.java index e198d00c0..49fa53625 100644 --- a/src/org/molgenis/framework/server/ResourceServlet.java +++ b/src/org/molgenis/framework/server/ResourceServlet.java @@ -28,6 +28,7 @@ public class ResourceServlet extends HttpServlet /** * Get a resource from the jar and copy it the the response. */ + @Override public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String resourcePath = request.getRequestURI().substring(request.getContextPath().length() + 1); diff --git a/src/org/molgenis/framework/server/RestInterface.java b/src/org/molgenis/framework/server/RestInterface.java index 3e5a29b5e..dba3a4724 100644 --- a/src/org/molgenis/framework/server/RestInterface.java +++ b/src/org/molgenis/framework/server/RestInterface.java @@ -26,7 +26,7 @@ */ public class RestInterface { - private static final transient Logger logger = Logger.getLogger(RestInterface.class.getSimpleName()); + private static final Logger logger = Logger.getLogger(RestInterface.class); /** * Handle use of the REST api URL pattern /rest/find/[select]?[filter] and @@ -110,8 +110,6 @@ private static void handleRetrievalRequest(HttpServletRequest request, HttpServl { TupleWriter writer = new CsvWriter(out); - // CsvWriter writer = new CsvFileWriter( new - // File("c:/testout.txt") ); if (rulesList != null) db.find(getClassForName(entityName), writer, rulesList.toArray(new QueryRule[rulesList.size()])); else diff --git a/src/org/molgenis/framework/server/ServeConfig.java b/src/org/molgenis/framework/server/ServeConfig.java index b464b8858..6f0b40328 100644 --- a/src/org/molgenis/framework/server/ServeConfig.java +++ b/src/org/molgenis/framework/server/ServeConfig.java @@ -31,6 +31,7 @@ public ServeConfig(ServletContext context, Hashtable initParams, // Methods from ServletConfig. // / Returns the context for the servlet. + @Override public ServletContext getServletContext() { return context; @@ -38,6 +39,7 @@ public ServletContext getServletContext() // / Gets an initialization parameter of the servlet. // @param name the parameter name + @Override public String getInitParameter(String name) { // This server supports servlet init params. :) @@ -47,6 +49,7 @@ public String getInitParameter(String name) // / Gets the names of the initialization parameters of the servlet. // @param name the parameter name + @Override public Enumeration getInitParameterNames() { // This server does:) support servlet init params. @@ -55,6 +58,7 @@ public Enumeration getInitParameterNames() } // 2.2 + @Override public String getServletName() { return servletName; diff --git a/src/org/molgenis/framework/server/async/AsyncMolgenisFrontController.java b/src/org/molgenis/framework/server/async/AsyncMolgenisFrontController.java index 25023f957..cd5c43883 100644 --- a/src/org/molgenis/framework/server/async/AsyncMolgenisFrontController.java +++ b/src/org/molgenis/framework/server/async/AsyncMolgenisFrontController.java @@ -25,6 +25,7 @@ public abstract class AsyncMolgenisFrontController extends MolgenisFrontControll protected AsyncMolgenisContext context; // the one and only service() used in the molgenis app + @Override public void service(HttpServletRequest request, HttpServletResponse response) { try diff --git a/src/org/molgenis/framework/server/services/FileService.java b/src/org/molgenis/framework/server/services/FileService.java index 44c6b46d5..3e4034e5f 100644 --- a/src/org/molgenis/framework/server/services/FileService.java +++ b/src/org/molgenis/framework/server/services/FileService.java @@ -24,13 +24,8 @@ public class FileService extends FileServlet implements MolgenisService { - - private MolgenisContext mc; - public FileService(MolgenisContext mc) throws ServletException { - this.mc = mc; - // needed to pass MIME type mapping from webserver to servlet! super.init(new ServeConfig(mc.getServletContext(), null, "/")); } @@ -49,7 +44,5 @@ public void handleRequest(MolgenisRequest request, MolgenisResponse response) th { throw new IOException(e); } - } - } \ No newline at end of file diff --git a/src/org/molgenis/framework/server/services/MolgenisBashService.java b/src/org/molgenis/framework/server/services/MolgenisBashService.java index f5dd137aa..f1beabe9b 100644 --- a/src/org/molgenis/framework/server/services/MolgenisBashService.java +++ b/src/org/molgenis/framework/server/services/MolgenisBashService.java @@ -7,7 +7,6 @@ import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; import org.molgenis.framework.server.MolgenisContext; import org.molgenis.framework.server.MolgenisRequest; import org.molgenis.framework.server.MolgenisResponse; @@ -15,13 +14,8 @@ public class MolgenisBashService implements MolgenisService { - Logger logger = Logger.getLogger(MolgenisBashService.class); - - private MolgenisContext mc; - public MolgenisBashService(MolgenisContext mc) { - this.mc = mc; } /** @@ -31,6 +25,7 @@ public MolgenisBashService(MolgenisContext mc) * @param response * @throws IOException */ + @Override public void handleRequest(MolgenisRequest request, MolgenisResponse response) throws IOException { diff --git a/src/org/molgenis/framework/server/services/MolgenisCleanTmpDirService.java b/src/org/molgenis/framework/server/services/MolgenisCleanTmpDirService.java index 982ed11e9..e4df3fe48 100644 --- a/src/org/molgenis/framework/server/services/MolgenisCleanTmpDirService.java +++ b/src/org/molgenis/framework/server/services/MolgenisCleanTmpDirService.java @@ -53,6 +53,7 @@ class CleanTmpDirProcess implements Runnable t.start(); } + @Override public void run() { boolean noExceptions = true; diff --git a/src/org/molgenis/framework/server/services/MolgenisCleanTmpDirServiceQuartz.java b/src/org/molgenis/framework/server/services/MolgenisCleanTmpDirServiceQuartz.java index 190cdb40e..be6e491e8 100644 --- a/src/org/molgenis/framework/server/services/MolgenisCleanTmpDirServiceQuartz.java +++ b/src/org/molgenis/framework/server/services/MolgenisCleanTmpDirServiceQuartz.java @@ -107,6 +107,7 @@ public void handleRequest(MolgenisRequest request, MolgenisResponse response) th class CleanTmpDirJob implements Job { + @Override public void execute(JobExecutionContext context) throws JobExecutionException { @SuppressWarnings("unchecked") diff --git a/src/org/molgenis/framework/server/services/MolgenisDownloadService.java b/src/org/molgenis/framework/server/services/MolgenisDownloadService.java index a645bffde..03e309a06 100644 --- a/src/org/molgenis/framework/server/services/MolgenisDownloadService.java +++ b/src/org/molgenis/framework/server/services/MolgenisDownloadService.java @@ -85,21 +85,42 @@ public void handleRequest(MolgenisRequest req, MolgenisResponse res) throws Pars showAvailableDownloads(out, db, req); out.println(""); } - else if (req.getRequest().getQueryString() != null - && req.getRequest().getQueryString().equals("__showQueryDialogue=true")) + else { - out.println(""); - out.println(authStatus.getPrintMe()); - if (req.getDatabase().getLogin().isAuthenticated()) + // Check if this entity exists and is downloadable + List downloadableEntities = getDownloadableEntities(db); + boolean found = false; + for (int i = 0; i < downloadableEntities.size() && !found; i++) { - out.println(MolgenisServiceAuthenticationHelper.displayLogoutForm()); + String name = downloadableEntities.get(i).getName(); + if ((name != null) && name.equals(entityName)) + { + found = true; + } + } + + if (!found) + { + res.getResponse().sendError(404);// NOT FOUND + return; + } + + if (req.getRequest().getQueryString() != null + && req.getRequest().getQueryString().equals("__showQueryDialogue=true")) + { + out.println(""); + out.println(authStatus.getPrintMe()); + if (req.getDatabase().getLogin().isAuthenticated()) + { + out.println(MolgenisServiceAuthenticationHelper.displayLogoutForm()); + } + showFilterableDownload(out, entityName, db); + out.println(""); + } + else + { + executeQuery(out, req, db, entityName); } - showFilterableDownload(out, entityName, db); - out.println(""); - } - else - { - executeQuery(out, req, db, entityName); } } } @@ -165,7 +186,7 @@ private void showAvailableDownloads(PrintWriter out, Database db, MolgenisReques out.println("You can download these data:
"); out.println(""); - for (org.molgenis.model.elements.Entity eClass : db.getMetaData().getEntities(false, false)) + for (org.molgenis.model.elements.Entity eClass : getDownloadableEntities(db)) { String name = eClass.getName(); Class klazz = db.getClassForName(name); @@ -187,6 +208,11 @@ private void showAvailableDownloads(PrintWriter out, Database db, MolgenisReques out.println("
"); } + private List getDownloadableEntities(Database db) throws DatabaseException + { + return db.getMetaData().getEntities(false, false); + } + private List createQueryRules(MolgenisRequest req, Class klazz) throws Exception { List rulesList = new ArrayList(); diff --git a/src/org/molgenis/framework/server/services/MolgenisRapiService.java b/src/org/molgenis/framework/server/services/MolgenisRapiService.java index 089f5f092..63a66e4b9 100644 --- a/src/org/molgenis/framework/server/services/MolgenisRapiService.java +++ b/src/org/molgenis/framework/server/services/MolgenisRapiService.java @@ -11,7 +11,6 @@ import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Logger; import org.molgenis.framework.server.FrontControllerAuthenticator; import org.molgenis.framework.server.FrontControllerAuthenticator.LoginStatus; import org.molgenis.framework.server.FrontControllerAuthenticator.LogoutStatus; @@ -23,13 +22,8 @@ public class MolgenisRapiService implements MolgenisService { - Logger logger = Logger.getLogger(MolgenisRapiService.class); - - private MolgenisContext mc; - public MolgenisRapiService(MolgenisContext mc) { - this.mc = mc; } /** @@ -39,6 +33,7 @@ public MolgenisRapiService(MolgenisContext mc) * @param response * @throws IOException */ + @Override public void handleRequest(MolgenisRequest request, MolgenisResponse response) throws IOException { // as used in /molgenis/src/org/molgenis/generators/R/RApiGen.R.ftl, @@ -156,7 +151,7 @@ else if (filename.equals("")) s += ("app_location <- paste(\"" + request.getAppLocation() + "\")\n"); s += ("\n"); s += ("#load autogenerated R interfaces\n"); - s += ("source(\"" + rSource + "source.R\")\n"); + s += ("msource(\"" + rSource + "source.R\")\n"); s += ("\n"); s += ("#connect to the server\n"); s += ("MOLGENIS.connect()\n"); diff --git a/src/org/molgenis/framework/server/services/MolgenisRestService.java b/src/org/molgenis/framework/server/services/MolgenisRestService.java index 700dbca47..db61b1cc4 100644 --- a/src/org/molgenis/framework/server/services/MolgenisRestService.java +++ b/src/org/molgenis/framework/server/services/MolgenisRestService.java @@ -40,6 +40,7 @@ public MolgenisRestService() throws ServletException restParams.put("jaxrs.serviceClasses", "app.servlet.RestApi"); } + @Override public void handleRequest(MolgenisRequest r, MolgenisResponse response) throws IOException { try diff --git a/src/org/molgenis/framework/server/services/MolgenisSoapService.java b/src/org/molgenis/framework/server/services/MolgenisSoapService.java index 4eb3fe33d..84289b45e 100644 --- a/src/org/molgenis/framework/server/services/MolgenisSoapService.java +++ b/src/org/molgenis/framework/server/services/MolgenisSoapService.java @@ -46,6 +46,7 @@ public MolgenisSoapService(MolgenisContext mc) throws ServletException // //super.init(sc); } + @Override public void handleRequest(MolgenisRequest request, MolgenisResponse response) throws IOException { freshDatabase = request.getDatabase(); diff --git a/src/org/molgenis/framework/server/services/MolgenisTmpFileService.java b/src/org/molgenis/framework/server/services/MolgenisTmpFileService.java index 869c71013..6c61838c9 100644 --- a/src/org/molgenis/framework/server/services/MolgenisTmpFileService.java +++ b/src/org/molgenis/framework/server/services/MolgenisTmpFileService.java @@ -35,6 +35,7 @@ public MolgenisTmpFileService(MolgenisContext mc) this.mc = mc; } + @Override public void handleRequest(MolgenisRequest request, MolgenisResponse response) throws IOException { String url = request.getRequest().getRequestURI(); diff --git a/src/org/molgenis/framework/server/services/MolgenisUploadService.java b/src/org/molgenis/framework/server/services/MolgenisUploadService.java index a77a82253..8f64c3fba 100644 --- a/src/org/molgenis/framework/server/services/MolgenisUploadService.java +++ b/src/org/molgenis/framework/server/services/MolgenisUploadService.java @@ -1,7 +1,6 @@ package org.molgenis.framework.server.services; import java.io.BufferedReader; -import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; @@ -31,7 +30,7 @@ public class MolgenisUploadService implements MolgenisService { - Logger logger = Logger.getLogger(MolgenisDownloadService.class); + private static final Logger logger = Logger.getLogger(MolgenisDownloadService.class); /** the name of the datatype input */ public static final String INPUT_DATATYPE = "data_type_input"; @@ -46,11 +45,8 @@ public class MolgenisUploadService implements MolgenisService /** indicating wether uploads should return added data */ public static final String INPUT_SILENT = "data_silent"; - // private MolgenisContext mc; - public MolgenisUploadService(MolgenisContext mc) { - // this.mc = mc; } @Override @@ -220,7 +216,7 @@ private void processRequest(MolgenisRequest req, PrintWriter out) throws Excepti if (action.equals("ADD")) { File temp = File.createTempFile("molgenis", "tab"); - TupleWriter writer = new CsvWriter(new PrintWriter(new BufferedWriter(new FileWriter(temp)))); + TupleWriter writer = new CsvWriter(new FileWriter(temp)); if (req.getObject(INPUT_SILENT) != null && req.getBool(INPUT_SILENT) == true) { writer.close(); diff --git a/src/org/molgenis/framework/server/services/MolgenisXrefService.java b/src/org/molgenis/framework/server/services/MolgenisXrefService.java index c32344e99..0694cd27d 100644 --- a/src/org/molgenis/framework/server/services/MolgenisXrefService.java +++ b/src/org/molgenis/framework/server/services/MolgenisXrefService.java @@ -14,6 +14,7 @@ import javax.servlet.http.HttpServletResponse; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -204,7 +205,7 @@ public static List getRecords(final Database db, final String } finally { - db.close(); + IOUtils.closeQuietly(db); return result; } } diff --git a/src/org/molgenis/framework/tupletable/AbstractTupleTable.java b/src/org/molgenis/framework/tupletable/AbstractTupleTable.java index 75c28e9f5..ba8ed4ccb 100644 --- a/src/org/molgenis/framework/tupletable/AbstractTupleTable.java +++ b/src/org/molgenis/framework/tupletable/AbstractTupleTable.java @@ -1,6 +1,7 @@ package org.molgenis.framework.tupletable; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -9,6 +10,9 @@ import org.molgenis.model.elements.Field; import org.molgenis.util.Tuple; +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; + public abstract class AbstractTupleTable implements TupleTable { private int limit = 0; @@ -72,25 +76,27 @@ public void showColumn(String columnName) } @Override - public List getHiddenColumnNames() + public List getHiddenColumns() { - List hiddenColumns = new ArrayList(); try { - for (Field column : getAllColumns()) + Collection hiddenColumns = Collections2.filter(getAllColumns(), new Predicate() { - if (column.isHidden()) + @Override + public boolean apply(Field f) { - hiddenColumns.add(column.getName()); + return f.isHidden(); } - } + + }); + + return new ArrayList(hiddenColumns); } catch (TableException e) { throw new RuntimeException(e); } - return hiddenColumns; } protected List getVisibleColumns() throws TableException diff --git a/src/org/molgenis/framework/tupletable/DatabaseTupleTable.java b/src/org/molgenis/framework/tupletable/DatabaseTupleTable.java index b438bdd85..411fa0e1c 100644 --- a/src/org/molgenis/framework/tupletable/DatabaseTupleTable.java +++ b/src/org/molgenis/framework/tupletable/DatabaseTupleTable.java @@ -4,25 +4,7 @@ public interface DatabaseTupleTable { -// private Database db; -// -// public DatabaseTupleTable(Database db) { -// if(db == null) throw new IllegalArgumentException(); -// this.db = db; -// } -// -// public Database getDb(); -// { -// return db; -// } -// -// public void setDb(Database db) -// { -// this.db = db; -// } - public Database getDb(); - + public void setDb(Database db); - } diff --git a/src/org/molgenis/framework/tupletable/TupleTable.java b/src/org/molgenis/framework/tupletable/TupleTable.java index 016b02376..2499be9cd 100644 --- a/src/org/molgenis/framework/tupletable/TupleTable.java +++ b/src/org/molgenis/framework/tupletable/TupleTable.java @@ -25,7 +25,7 @@ public interface TupleTable extends Iterable public void showColumn(String columnName); - public List getHiddenColumnNames(); + public List getHiddenColumns(); /** Wether the first column is 'fixed', must always be visible **/ public void setFirstColumnFixed(boolean firstColumnFixed); diff --git a/src/org/molgenis/framework/tupletable/impl/CsvTable.java b/src/org/molgenis/framework/tupletable/impl/CsvTable.java index 699cf2f82..1ea0147f6 100644 --- a/src/org/molgenis/framework/tupletable/impl/CsvTable.java +++ b/src/org/molgenis/framework/tupletable/impl/CsvTable.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.zip.DataFormatException; +import org.apache.commons.io.IOUtils; import org.molgenis.framework.tupletable.AbstractTupleTable; import org.molgenis.framework.tupletable.TableException; import org.molgenis.model.elements.Field; @@ -82,9 +83,9 @@ public int getCount() throws TableException { if (rowCount == -1) { + LineNumberReader lineReader = new LineNumberReader(new InputStreamReader(countStream)); try { - LineNumberReader lineReader = new LineNumberReader(new InputStreamReader(countStream)); String line = null; while ((line = lineReader.readLine()) != null) { @@ -98,6 +99,10 @@ public int getCount() throws TableException { throw new TableException(e); } + finally + { + IOUtils.closeQuietly(lineReader); + } } return rowCount; } diff --git a/src/org/molgenis/framework/tupletable/impl/EditableTableDecorator.java b/src/org/molgenis/framework/tupletable/impl/EditableTableDecorator.java index c5f55cf94..242ac3ae7 100644 --- a/src/org/molgenis/framework/tupletable/impl/EditableTableDecorator.java +++ b/src/org/molgenis/framework/tupletable/impl/EditableTableDecorator.java @@ -4,7 +4,6 @@ import java.util.Iterator; import java.util.List; -import org.molgenis.framework.db.Database; import org.molgenis.framework.db.QueryRule; import org.molgenis.framework.tupletable.FilterableTupleTable; import org.molgenis.framework.tupletable.TableException; @@ -188,9 +187,9 @@ public void showColumn(String columnName) } @Override - public List getHiddenColumnNames() + public List getHiddenColumns() { - return decoratedTable.getHiddenColumnNames(); + return decoratedTable.getHiddenColumns(); } @Override diff --git a/src/org/molgenis/framework/tupletable/impl/RSIterator.java b/src/org/molgenis/framework/tupletable/impl/RSIterator.java index 134e87db2..a9bf789c7 100644 --- a/src/org/molgenis/framework/tupletable/impl/RSIterator.java +++ b/src/org/molgenis/framework/tupletable/impl/RSIterator.java @@ -18,6 +18,7 @@ public RSIterator(ResultSetTuple rs) this.entities = rs; } + @Override public Tuple next() { try @@ -35,6 +36,7 @@ public Tuple next() } } + @Override public boolean hasNext() { try diff --git a/src/org/molgenis/framework/tupletable/view/JQGridJSObjects/JQGridColModel.java b/src/org/molgenis/framework/tupletable/view/JQGridJSObjects/JQGridColModel.java index ded8b5361..b8c652ed0 100644 --- a/src/org/molgenis/framework/tupletable/view/JQGridJSObjects/JQGridColModel.java +++ b/src/org/molgenis/framework/tupletable/view/JQGridJSObjects/JQGridColModel.java @@ -9,6 +9,7 @@ public class JQGridColModel { private String name; + private String label; private String index; private int width = 100; private String stype; @@ -44,6 +45,7 @@ public JQGridColModel(Field f) { this.name = f.getSqlName(); this.index = f.getSqlName(); + this.label = f.getLabel(); this.title = name; this.path = title; this.editable = true; diff --git a/src/org/molgenis/framework/tupletable/view/JQGridJSObjects/JQGridConfiguration.java b/src/org/molgenis/framework/tupletable/view/JQGridJSObjects/JQGridConfiguration.java index 717aed962..d19550eb2 100644 --- a/src/org/molgenis/framework/tupletable/view/JQGridJSObjects/JQGridConfiguration.java +++ b/src/org/molgenis/framework/tupletable/view/JQGridJSObjects/JQGridConfiguration.java @@ -31,18 +31,15 @@ public class JQGridConfiguration /** id of pager diff (== toolbar at bottom) */ private final String pager; - /** labels of the columns */ - private List colNames = new ArrayList(); - /** definitions of the columns */ private List colModel = new ArrayList(); /** current limit = number of rows to show */ - private int rowNum = 10; + private int rowNum = 20; /** choices of alternative rowNum values */ private Integer[] rowList = new Integer[] - { 10, 20, 30 }; + { 20, 30, 40 }; /** indicates whether we want to show total records from query in page bar */ private boolean viewrecords = true; @@ -59,7 +56,7 @@ public class JQGridConfiguration private String sortorder = "desc"; /** default height */ - private String height = "232px"; + private String height = "466px"; /** the total column count **/ private int totalColumnCount; @@ -70,8 +67,8 @@ public class JQGridConfiguration /** the current coliumn limit, so the nr of visible columns **/ private int colLimit; - /** list of hidden column names **/ - private List hiddenColumns; + /** list of hidden columns **/ + private List hiddenColumns = new ArrayList(); /** Wether the first column is 'fixed', must always be visible **/ private boolean firstColumnFixed; @@ -119,8 +116,6 @@ public JQGridConfiguration(Database db, String id, String idField, String url, S jsonReader.put("repeatitems", false); jsonReader.put("id", idField); - this.hiddenColumns = tupleTable.getHiddenColumnNames(); - if (tupleTable instanceof FilterableTupleTable) { // sortable = true; @@ -139,6 +134,12 @@ public JQGridConfiguration(Database db, String id, String idField, String url, S { colModel.add(new JQGridColModel(f)); } + + // Set hidden columns, for in dropdown + for (Field f : tupleTable.getHiddenColumns()) + { + hiddenColumns.add(new JQGridColModel(f)); + } } public JQGridConfiguration(String id, String url, String caption) diff --git a/src/org/molgenis/framework/tupletable/view/JQGridView.ftl b/src/org/molgenis/framework/tupletable/view/JQGridView.ftl index f0488b064..591479c67 100644 --- a/src/org/molgenis/framework/tupletable/view/JQGridView.ftl +++ b/src/org/molgenis/framework/tupletable/view/JQGridView.ftl @@ -1,28 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/src/org/molgenis/framework/ui/SimpleScreenController.java b/src/org/molgenis/framework/ui/SimpleScreenController.java index f492f8dc6..7a8ceba66 100644 --- a/src/org/molgenis/framework/ui/SimpleScreenController.java +++ b/src/org/molgenis/framework/ui/SimpleScreenController.java @@ -34,7 +34,7 @@ public abstract class SimpleScreenController extends private MODEL model; /** */ - protected final transient Logger logger = Logger.getLogger(this.getClass()); + protected static final Logger logger = Logger.getLogger(SimpleScreenController.class); /** */ static final long serialVersionUID = 5286068849305140609L; /** Determines which of the subscreens should be shown */ @@ -60,6 +60,7 @@ public SimpleScreenController(String name, MODEL model, ScreenController pare * * @throws Exception */ + @Override public abstract void reload(Database db) throws Exception; /** @@ -130,11 +131,13 @@ public boolean isSelected(ScreenModel model) } } + @Override public ApplicationController getApplicationController() { return (ApplicationController) this.getRoot(); } + @Override public MODEL getModel() { return model; @@ -219,6 +222,7 @@ public ScreenModel getSelected() return null; } + @Override public String render() throws HtmlInputException { String result = this.getView().render(); diff --git a/src/org/molgenis/framework/ui/SimpleScreenModel.java b/src/org/molgenis/framework/ui/SimpleScreenModel.java index 93960092a..c0edc4b31 100644 --- a/src/org/molgenis/framework/ui/SimpleScreenModel.java +++ b/src/org/molgenis/framework/ui/SimpleScreenModel.java @@ -36,7 +36,7 @@ public abstract class SimpleScreenModel implements ScreenModel, Serializable // member variables private static final long serialVersionUID = 3764151203967037515L; /** Logger */ - protected final transient Logger logger = Logger.getLogger(this.getClass().getSimpleName()); + protected static final Logger logger = Logger.getLogger(SimpleScreenModel.class); /** * constant parameter name for screen target controller (to be used when * rendering actions) @@ -79,11 +79,13 @@ public SimpleScreenModel(ScreenController controller) /** * Reset all model properties to default. */ + @Override public void reset() { } + @Override public String render() throws HtmlInputException { String result = this.getController().render(); @@ -94,6 +96,7 @@ public String render() throws HtmlInputException /** * Readonly name, inherited from controller */ + @Override public String getName() { return this.getController().getName(); @@ -118,6 +121,7 @@ public String getName() /** * Set the pretty label to show on screen. */ + @Override public void setLabel(String label) { this.label = label; @@ -126,6 +130,7 @@ public void setLabel(String label) /** * @return Pretty label to show on screen */ + @Override public String getLabel() { return label; @@ -136,6 +141,7 @@ public String getLabel() * methods of the screen. (while the ScreenModel intself only contains * state). */ + @Override public ScreenController getController() { return controller; @@ -226,7 +232,7 @@ public void addCommand(ScreenCommand command) // put the command in the menu menubar.get(command.getMenu()).addCommand(command); - this.logger.debug("added action " + command.getName()); + logger.debug("added action " + command.getName()); } public ScreenCommand getCommand(String commandID) @@ -254,11 +260,13 @@ public Collection getMenus() * * @param messages */ + @Override public void setMessages(Vector messages) { this.messages = messages; } + @Override public void setMessages(ScreenMessage... messages) { this.messages = new Vector(Arrays.asList(messages)); @@ -267,6 +275,7 @@ public void setMessages(ScreenMessage... messages) /** * @return Messages to inform the user of state changes and succes. */ + @Override public Vector getMessages() { return this.messages; @@ -304,6 +313,7 @@ public List getChildren() return result; } + @Override public boolean isVisible() { return visible; @@ -315,12 +325,14 @@ public void setVisible(boolean visible) } /** Shorthand for setMessages(new ScreenMessage("success message",true)); */ + @Override public void setSuccess(String message) { this.setMessages(new ScreenMessage(message, true)); } /** Shorthand for setMessages(new ScreenMessage("succes message",false)); */ + @Override public void setError(String message) { this.setMessages(new ScreenMessage(message, false)); diff --git a/src/org/molgenis/framework/ui/commands/AddBatchCommand.java b/src/org/molgenis/framework/ui/commands/AddBatchCommand.java index 4fd0d39d4..fa88a0451 100644 --- a/src/org/molgenis/framework/ui/commands/AddBatchCommand.java +++ b/src/org/molgenis/framework/ui/commands/AddBatchCommand.java @@ -26,7 +26,7 @@ public class AddBatchCommand extends SimpleCommand { private static final long serialVersionUID = -4067952586340535730L; - public static final transient Logger logger = Logger.getLogger(AddBatchCommand.class); + private static final Logger logger = Logger.getLogger(AddBatchCommand.class); public AddBatchCommand(String name, ScreenController owner) { diff --git a/src/org/molgenis/framework/ui/commands/AddCommand2.java b/src/org/molgenis/framework/ui/commands/AddCommand2.java index 109212457..defb7f4e3 100644 --- a/src/org/molgenis/framework/ui/commands/AddCommand2.java +++ b/src/org/molgenis/framework/ui/commands/AddCommand2.java @@ -84,11 +84,13 @@ public ScreenModel.Show handleRequest(Database db, Tuple request, OutputStream d return ScreenModel.Show.SHOW_MAIN; } + @Override public Vector getMessages() { return messages; } + @Override public void setMessages(Vector messages) { this.messages = messages; diff --git a/src/org/molgenis/framework/ui/commands/AddCsvFileCommand.java b/src/org/molgenis/framework/ui/commands/AddCsvFileCommand.java index 351751a8e..bc6b337f6 100644 --- a/src/org/molgenis/framework/ui/commands/AddCsvFileCommand.java +++ b/src/org/molgenis/framework/ui/commands/AddCsvFileCommand.java @@ -26,7 +26,7 @@ public class AddCsvFileCommand extends SimpleCommand { private static final long serialVersionUID = -4067952586340535730L; - public static final transient Logger logger = Logger.getLogger(AddCsvFileCommand.class); + private static final Logger logger = Logger.getLogger(AddCsvFileCommand.class); public AddCsvFileCommand(String name, ScreenController owner) { diff --git a/src/org/molgenis/framework/ui/commands/CommandMenu.java b/src/org/molgenis/framework/ui/commands/CommandMenu.java index 366071fad..ebee893fe 100644 --- a/src/org/molgenis/framework/ui/commands/CommandMenu.java +++ b/src/org/molgenis/framework/ui/commands/CommandMenu.java @@ -19,7 +19,7 @@ public class CommandMenu extends SimpleCommand { private static final long serialVersionUID = 7869046696648113688L; - public static final transient Logger logger = Logger.getLogger(CommandMenu.class); + private static final Logger logger = Logger.getLogger(CommandMenu.class); /** menu items with order as entered */ private Map menu_items = new LinkedHashMap(); @@ -37,6 +37,7 @@ public CommandMenu(String id, ScreenController screen, String label, String i * * @param command */ + @Override public void addCommand(ScreenCommand command) { if (menu_items.containsKey(command.getName())) @@ -61,6 +62,7 @@ public Collection getCommands() * * @param name */ + @Override public ScreenCommand getCommand(String name) { return menu_items.get(name); diff --git a/src/org/molgenis/framework/ui/commands/DownloadAllCommand.java b/src/org/molgenis/framework/ui/commands/DownloadAllCommand.java index e3e28f969..d5be36b98 100644 --- a/src/org/molgenis/framework/ui/commands/DownloadAllCommand.java +++ b/src/org/molgenis/framework/ui/commands/DownloadAllCommand.java @@ -4,7 +4,6 @@ package org.molgenis.framework.ui.commands; import java.io.OutputStream; -import java.util.Arrays; import java.util.List; import org.apache.log4j.Logger; @@ -17,7 +16,6 @@ import org.molgenis.framework.ui.ScreenModel; import org.molgenis.framework.ui.html.ActionInput; import org.molgenis.framework.ui.html.HtmlInput; -import org.molgenis.model.MolgenisModelException; import org.molgenis.util.CsvWriter; import org.molgenis.util.Entity; import org.molgenis.util.Tuple; @@ -30,7 +28,7 @@ public class DownloadAllCommand extends SimpleCommand { private static final long serialVersionUID = -2682113764135477871L; - public static final transient Logger logger = Logger.getLogger(DownloadAllCommand.class); + private static final Logger logger = Logger.getLogger(DownloadAllCommand.class); public DownloadAllCommand(String name, ScreenController parentScreen) { @@ -51,21 +49,8 @@ public ScreenModel.Show handleRequest(Database db, Tuple request, OutputStream c List fieldsToExport = controller.getVisibleColumnNames(); - // TODO : remove entity name, capitals to small , and remove all _name - // fields - // we need to rewrite rules to accomodate the 'all' - QueryRule[] rules; - try - { - rules = controller.rewriteAllRules(db, Arrays.asList(model.getRulesExclLimitOffset())); - } - catch (MolgenisModelException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - throw new DatabaseException(e); - } - + // TODO remove entity name, capitals to small , and remove _name fields + QueryRule[] rules = model.getRulesExclLimitOffset(); db.find(model.getController().getEntityClass(), new CsvWriter(csvDownload), fieldsToExport, rules); return ScreenModel.Show.SHOW_MAIN; diff --git a/src/org/molgenis/framework/ui/commands/DownloadAllXlsCommand.java b/src/org/molgenis/framework/ui/commands/DownloadAllXlsCommand.java index 1f66073a0..fedb9efe6 100644 --- a/src/org/molgenis/framework/ui/commands/DownloadAllXlsCommand.java +++ b/src/org/molgenis/framework/ui/commands/DownloadAllXlsCommand.java @@ -1,7 +1,6 @@ package org.molgenis.framework.ui.commands; import java.io.OutputStream; -import java.util.Arrays; import java.util.List; import org.apache.log4j.Logger; @@ -13,7 +12,6 @@ import org.molgenis.framework.ui.ScreenModel; import org.molgenis.framework.ui.html.ActionInput; import org.molgenis.framework.ui.html.HtmlInput; -import org.molgenis.model.MolgenisModelException; import org.molgenis.util.Entity; import org.molgenis.util.Tuple; import org.molgenis.util.XlsWriter; @@ -21,7 +19,7 @@ public class DownloadAllXlsCommand extends SimpleCommand { private static final long serialVersionUID = -2682113764135477871L; - public static final transient Logger logger = Logger.getLogger(DownloadAllCommand.class); + private static final Logger logger = Logger.getLogger(DownloadAllCommand.class); public DownloadAllXlsCommand(String name, FormController parentScreen) { @@ -44,31 +42,19 @@ public ScreenModel.Show handleRequest(Database db, Tuple request, OutputStream x // TODO : remove entity name, capitals to small , and remove all _name // fields - // we need to rewrite rules to accomodate the 'all' - QueryRule[] rules; - try - { - rules = controller.rewriteAllRules(db, Arrays.asList(model.getRulesExclLimitOffset())); - } - catch (MolgenisModelException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - throw new DatabaseException(e); - } // Comments from Despoina: // TODO : the actual xls headers/formatting // TODO : this needs different call or TODO just an extra if in // abstractMolgenisServlet for the different suffix (.xls) ? - // This db.find() is rerouted by your Database implementation's find() - // to the one in the appropriate mapper + QueryRule[] rules = model.getRulesExclLimitOffset(); db.find(model.getController().getEntityClass(), new XlsWriter(xlsDownload), fieldsToExport, rules); return ScreenModel.Show.SHOW_MAIN; } + @Override public List getActions() { // TODO Auto-generated method stub diff --git a/src/org/molgenis/framework/ui/commands/DownloadSelectedCommand.java b/src/org/molgenis/framework/ui/commands/DownloadSelectedCommand.java index b1349ef92..2e0e0243d 100644 --- a/src/org/molgenis/framework/ui/commands/DownloadSelectedCommand.java +++ b/src/org/molgenis/framework/ui/commands/DownloadSelectedCommand.java @@ -31,7 +31,7 @@ public class DownloadSelectedCommand extends SimpleCommand { private static final long serialVersionUID = 3619865367653131342L; - public static final transient Logger logger = Logger.getLogger(DownloadSelectedCommand.class); + private static final Logger logger = Logger.getLogger(DownloadSelectedCommand.class); public DownloadSelectedCommand(String name, ScreenController parentScreen) { diff --git a/src/org/molgenis/framework/ui/commands/DownloadSelectedXlsCommand.java b/src/org/molgenis/framework/ui/commands/DownloadSelectedXlsCommand.java index 66ad17586..f2cd4f117 100644 --- a/src/org/molgenis/framework/ui/commands/DownloadSelectedXlsCommand.java +++ b/src/org/molgenis/framework/ui/commands/DownloadSelectedXlsCommand.java @@ -31,7 +31,7 @@ public class DownloadSelectedXlsCommand extends SimpleCommand { private static final long serialVersionUID = 3619865367653131342L; - public static final transient Logger logger = Logger.getLogger(DownloadSelectedXlsCommand.class); + private static final Logger logger = Logger.getLogger(DownloadSelectedXlsCommand.class); public DownloadSelectedXlsCommand(String name, ScreenController parentScreen) { diff --git a/src/org/molgenis/framework/ui/commands/DownloadVisibleCommand.java b/src/org/molgenis/framework/ui/commands/DownloadVisibleCommand.java index 177aeaa61..f0ff6e9b2 100644 --- a/src/org/molgenis/framework/ui/commands/DownloadVisibleCommand.java +++ b/src/org/molgenis/framework/ui/commands/DownloadVisibleCommand.java @@ -6,7 +6,6 @@ import java.io.OutputStream; import java.util.List; -import org.apache.log4j.Logger; import org.molgenis.framework.db.Database; import org.molgenis.framework.db.DatabaseException; import org.molgenis.framework.ui.FormController; @@ -29,7 +28,6 @@ public class DownloadVisibleCommand extends SimpleCommand { private static final long serialVersionUID = -6279819301321361448L; - public static final transient Logger logger = Logger.getLogger(DownloadVisibleCommand.class); public DownloadVisibleCommand(String name, ScreenController parentScreen) { diff --git a/src/org/molgenis/framework/ui/commands/DownloadVisibleXlsCommand.java b/src/org/molgenis/framework/ui/commands/DownloadVisibleXlsCommand.java index b4fc4bc18..d2242bf8b 100644 --- a/src/org/molgenis/framework/ui/commands/DownloadVisibleXlsCommand.java +++ b/src/org/molgenis/framework/ui/commands/DownloadVisibleXlsCommand.java @@ -7,7 +7,6 @@ import java.text.ParseException; import java.util.List; -import org.apache.log4j.Logger; import org.molgenis.framework.db.Database; import org.molgenis.framework.db.DatabaseException; import org.molgenis.framework.ui.FormController; @@ -30,7 +29,6 @@ public class DownloadVisibleXlsCommand extends SimpleCommand { private static final long serialVersionUID = -6279819301321361448L; - public static final transient Logger logger = Logger.getLogger(DownloadVisibleXlsCommand.class); public DownloadVisibleXlsCommand(String name, ScreenController parentScreen) { diff --git a/src/org/molgenis/framework/ui/commands/EditSelectedCommand.java b/src/org/molgenis/framework/ui/commands/EditSelectedCommand.java index 7e94e95c6..d988c8a1d 100644 --- a/src/org/molgenis/framework/ui/commands/EditSelectedCommand.java +++ b/src/org/molgenis/framework/ui/commands/EditSelectedCommand.java @@ -28,7 +28,7 @@ public class EditSelectedCommand extends SimpleCommand { private static final long serialVersionUID = -2996595009523144519L; - public static final transient Logger logger = Logger.getLogger(EditSelectedCommand.class); + private static final Logger logger = Logger.getLogger(EditSelectedCommand.class); private List selectedIds = new ArrayList(); public EditSelectedCommand(String name, ScreenController parentScreen) diff --git a/src/org/molgenis/framework/ui/commands/EditSelectedInput.java b/src/org/molgenis/framework/ui/commands/EditSelectedInput.java index 2935b5469..ea38bfe6a 100644 --- a/src/org/molgenis/framework/ui/commands/EditSelectedInput.java +++ b/src/org/molgenis/framework/ui/commands/EditSelectedInput.java @@ -16,6 +16,7 @@ public EditSelectedInput(HtmlInput input) this.input = input; } + @Override public String getLabel() { return input.getLabel(); diff --git a/src/org/molgenis/framework/ui/commands/GalaxyCommand.java b/src/org/molgenis/framework/ui/commands/GalaxyCommand.java index 0645838de..b43b3df74 100644 --- a/src/org/molgenis/framework/ui/commands/GalaxyCommand.java +++ b/src/org/molgenis/framework/ui/commands/GalaxyCommand.java @@ -20,10 +20,8 @@ * * @param */ - public class GalaxyCommand extends SimpleCommand { - public GalaxyCommand(String name, ScreenController parentController) { super(name, parentController); @@ -35,11 +33,8 @@ public GalaxyCommand(String name, ScreenController parentController) { this.setLabel("Send Selected to Galaxy"); } - // this.setLabel("Send to Galaxy"); this.setIcon("generated-res/img/upload2galaxy.png"); this.setMenu("File"); - // this.setDialog(false); - } // TODO: Get proper UID. @@ -103,8 +98,6 @@ public List getActions() } @Override - // public ScreenModel.Show handleRequest(Database db, Tuple request, - // PrintWriter downloadStream) { public ScreenModel.Show handleRequest(Database db, Tuple request, OutputStream downloadStream) { logger.debug("galaxy button clicked: " + this.getController().getApplicationController().getGalaxyUrl()); @@ -112,50 +105,6 @@ public ScreenModel.Show handleRequest(Database db, Tuple request, OutputStream d return ScreenModel.Show.SHOW_MAIN; } - // @SuppressWarnings("unchecked") - // @Override - // - // public ScreenModel.Show handleRequest(Database db, Tuple request, - // PrintWriter csvDownload) - // throws ParseException, DatabaseException, IOException { - // - // public ScreenModel.Show handleRequest(Database db, Tuple request, - // OutputStream downloadStream) - // { - // logger.debug("galaxy button clicked: "+this.getController().getApplicationController().getGalaxyUrl()); - // logger.error(this.getName()); - // - // FormModel view = this.getFormScreen(); - // - // Object ids = request.getList(FormModel.INPUT_SELECTED); - // List records = new ArrayList(); - // - // if (ids != null) - // { - // if (ids instanceof List) - // { - // records = (List) ids; - // } - // else - // records.add(ids); - // } - // - // if (records.size() == 0) - // { - // csvDownload.println("No records selected."); - // return ScreenModel.Show.SHOW_MAIN; - // } - // - // List fieldsToExport = - // ((FormController)this.getController()).getVisibleColumnNames(); - // - // // watch out, the "IN" operator expects an Object[] - // db.find(view.getController().getEntityClass(), new - // CsvWriter(csvDownload), fieldsToExport, - // new QueryRule("id", Operator.IN, records)); - // return ScreenModel.Show.SHOW_MAIN; - // } - @Override public boolean isVisible() { @@ -167,5 +116,4 @@ public boolean isVisible() } return false; } - } \ No newline at end of file diff --git a/src/org/molgenis/framework/ui/commands/PluginCommand.java b/src/org/molgenis/framework/ui/commands/PluginCommand.java index 2b121ed31..7e23d3280 100644 --- a/src/org/molgenis/framework/ui/commands/PluginCommand.java +++ b/src/org/molgenis/framework/ui/commands/PluginCommand.java @@ -19,6 +19,7 @@ public PluginCommand(String name, ScreenController parentScreen) } /** Optional function if you need a dialog */ + @Override public abstract List> getInputs(); /** @@ -28,7 +29,9 @@ public PluginCommand(String name, ScreenController parentScreen) */ public abstract void handleRequest(Tuple request); + @Override public abstract String getMacro(); + @Override public abstract String getTemplate(); } diff --git a/src/org/molgenis/framework/ui/commands/RemoveSelectedCommand.java b/src/org/molgenis/framework/ui/commands/RemoveSelectedCommand.java index be5a45953..4b218f663 100644 --- a/src/org/molgenis/framework/ui/commands/RemoveSelectedCommand.java +++ b/src/org/molgenis/framework/ui/commands/RemoveSelectedCommand.java @@ -23,7 +23,7 @@ public class RemoveSelectedCommand extends SimpleCommand { private static final long serialVersionUID = 4730493886936446817L; - public static final transient Logger logger = Logger.getLogger(RemoveSelectedCommand.class); + private static final Logger logger = Logger.getLogger(RemoveSelectedCommand.class); public RemoveSelectedCommand(String name, ScreenController parentScreen) { diff --git a/src/org/molgenis/framework/ui/commands/ScreenCommand.java b/src/org/molgenis/framework/ui/commands/ScreenCommand.java index c4483b18a..aa3cf070d 100644 --- a/src/org/molgenis/framework/ui/commands/ScreenCommand.java +++ b/src/org/molgenis/framework/ui/commands/ScreenCommand.java @@ -48,12 +48,14 @@ public interface ScreenCommand extends Serializable, ScreenModel /** * @return descriptive label of this command */ + @Override public String getLabel(); /** * @param label * descriptive label of this command */ + @Override public void setLabel(String label); /** @@ -86,6 +88,7 @@ public interface ScreenCommand extends Serializable, ScreenModel /** * @return unique action name of this command (unique within one screen) */ + @Override public String getName(); /** @@ -109,6 +112,7 @@ public interface ScreenCommand extends Serializable, ScreenModel /** * @return The screen this command is a part of */ + @Override public ScreenController getController(); /** @@ -120,6 +124,7 @@ public interface ScreenCommand extends Serializable, ScreenModel * @param screen * The screen this command belongs to */ + @Override public void setController(ScreenController screen); /** @@ -257,11 +262,13 @@ public interface ScreenCommand extends Serializable, ScreenModel * @return false if this command should be hidden. For example because the * menu option is only available if particular rights are met. */ + @Override public boolean isVisible(); /** * Render this command plugin. */ + @Override public String render(); } diff --git a/src/org/molgenis/framework/ui/commands/SimpleCommand.java b/src/org/molgenis/framework/ui/commands/SimpleCommand.java index 66a2ea03b..f343e3e3b 100644 --- a/src/org/molgenis/framework/ui/commands/SimpleCommand.java +++ b/src/org/molgenis/framework/ui/commands/SimpleCommand.java @@ -22,10 +22,6 @@ public abstract class SimpleCommand extends SimpleScreenModel implements ScreenC { private static final long serialVersionUID = -3289941539731301135L; - /** Logger */ - // private static final transient Logger logger = - // Logger.getLogger(SimpleCommand.class.getSimpleName()); - /** Internal name of this command (unique within the screen) */ private String name; @@ -75,6 +71,7 @@ public SimpleCommand(String name, ScreenController parentController) /** * Get the javascript needed. If not provided it will be auto-generated. */ + @Override public String getJavaScriptAction() { if (onClickJavascript == null) @@ -149,6 +146,7 @@ else if (this.isDownload()) * * @throws DatabaseException */ + @Override public abstract List> getInputs() throws DatabaseException; // GETTERS AND SETTERS BELOW @@ -283,6 +281,7 @@ public void setToolbar(boolean toolbar) /** * Default view name = 'SimpleCommand' */ + @Override public String getMacro() { return ScreenCommand.class.getSimpleName(); diff --git a/src/org/molgenis/framework/ui/commands/ViewListViewCommand.java b/src/org/molgenis/framework/ui/commands/ViewListViewCommand.java index 6fd5349b7..26f222703 100644 --- a/src/org/molgenis/framework/ui/commands/ViewListViewCommand.java +++ b/src/org/molgenis/framework/ui/commands/ViewListViewCommand.java @@ -21,7 +21,7 @@ public class ViewListViewCommand extends SimpleCommand { private static final long serialVersionUID = -5921987163907171740L; - public static final transient Logger logger = Logger.getLogger(ViewListViewCommand.class); + private static final Logger logger = Logger.getLogger(ViewListViewCommand.class); public ViewListViewCommand(String name, ScreenController parentScreen) { diff --git a/src/org/molgenis/framework/ui/html/ActionInput.java b/src/org/molgenis/framework/ui/html/ActionInput.java index 7c9cdc3d2..f3125a131 100644 --- a/src/org/molgenis/framework/ui/html/ActionInput.java +++ b/src/org/molgenis/framework/ui/html/ActionInput.java @@ -9,7 +9,6 @@ * The ActionInput defines action buttons. When clicked, it will result in a new * request(__action=<name>) */ -@SuppressWarnings("deprecation") public class ActionInput extends HtmlInput { public enum Type @@ -37,6 +36,7 @@ private Type(String tag) public final String tag; + @Override public String toString() { return tag; diff --git a/src/org/molgenis/framework/ui/html/CodeInput.java b/src/org/molgenis/framework/ui/html/CodeInput.java index e1ad16f5a..b9aea475b 100644 --- a/src/org/molgenis/framework/ui/html/CodeInput.java +++ b/src/org/molgenis/framework/ui/html/CodeInput.java @@ -71,6 +71,7 @@ protected CodeInput() // TODO Auto-generated constructor stub } + @Override public String getCustomHtmlHeaders() { // borrow style from mce @@ -118,6 +119,7 @@ public String getParserStyle() return this.parser.getCssPath(); } + @Override public String toHtml() { Map parameters = new TreeMap(); diff --git a/src/org/molgenis/framework/ui/html/DateInput.java b/src/org/molgenis/framework/ui/html/DateInput.java index 32f1a63fc..bee453426 100644 --- a/src/org/molgenis/framework/ui/html/DateInput.java +++ b/src/org/molgenis/framework/ui/html/DateInput.java @@ -135,6 +135,7 @@ protected DateInput() } // tohtml + @Override public String toHtml() { if (uiToolkit == UiToolkit.JQUERY) @@ -198,6 +199,7 @@ public String getValue(String format) return result; } + @Override public String getValue() { return this.getValue("MMMM d, yyyy"); diff --git a/src/org/molgenis/framework/ui/html/DatetimeInput.java b/src/org/molgenis/framework/ui/html/DatetimeInput.java index 6bff1fecc..ed303e125 100644 --- a/src/org/molgenis/framework/ui/html/DatetimeInput.java +++ b/src/org/molgenis/framework/ui/html/DatetimeInput.java @@ -57,6 +57,7 @@ public DatetimeInput(Tuple properties) throws HtmlInputException } // tohtml + @Override public String toHtml() { if (this.isHidden()) @@ -147,6 +148,7 @@ public String getValue(String format) return result; } + @Override public String getValue() { return getValue("MMMM d, yyyy, HH:mm:ss"); diff --git a/src/org/molgenis/framework/ui/html/EntityForm.java b/src/org/molgenis/framework/ui/html/EntityForm.java index f8944986f..89c64d4f4 100644 --- a/src/org/molgenis/framework/ui/html/EntityForm.java +++ b/src/org/molgenis/framework/ui/html/EntityForm.java @@ -59,6 +59,7 @@ public void setEntity(E entity) this.entity = entity; } + @Override public void setInputs(List> inputs) { throw new UnsupportedOperationException("In EntityForm the inputs cannot be changed"); diff --git a/src/org/molgenis/framework/ui/html/FileInput.java b/src/org/molgenis/framework/ui/html/FileInput.java index 3d0d64198..d086c6f39 100644 --- a/src/org/molgenis/framework/ui/html/FileInput.java +++ b/src/org/molgenis/framework/ui/html/FileInput.java @@ -87,6 +87,7 @@ else if (uiToolkit == UiToolkit.JQUERY) /** * {@inheritDoc}. Extended to show download button. */ + @Override public String getValue() { if (!super.getValue().isEmpty()) return super.getValue() diff --git a/src/org/molgenis/framework/ui/html/HtmlForm.java b/src/org/molgenis/framework/ui/html/HtmlForm.java index 26d02bb93..d44edb37f 100644 --- a/src/org/molgenis/framework/ui/html/HtmlForm.java +++ b/src/org/molgenis/framework/ui/html/HtmlForm.java @@ -64,12 +64,14 @@ public void setInputs(List> inputs) this.inputs = inputs; } + @Override public boolean isReadonly() { return readonly; } - public HtmlInput setReadonly(boolean readonly) + @Override + public HtmlInput setReadonly(boolean readonly) { this.readonly = readonly; return this; diff --git a/src/org/molgenis/framework/ui/html/HtmlInput.java b/src/org/molgenis/framework/ui/html/HtmlInput.java index 1bf169672..481d171b1 100644 --- a/src/org/molgenis/framework/ui/html/HtmlInput.java +++ b/src/org/molgenis/framework/ui/html/HtmlInput.java @@ -111,8 +111,7 @@ public HtmlInput(String name, E value) public HtmlInput(String name, String label, E value) { - assert (name != null); - assert (label != null); + if (name == null) throw new IllegalArgumentException("name is null"); this.setId(name.replace(" ", "")); this.setName(name.replace(" ", "")); this.setLabel(label); @@ -191,8 +190,6 @@ public String getLabel() public HtmlInput setLabel(String label) { - // assert (label != null); fails web tests due to label -> null - // constructors, so allow it this.label = label; return this; } @@ -319,7 +316,7 @@ public String toHtml(Tuple params) throws ParseException, HtmlInputException } /** Synonym to toHtml */ - @SuppressWarnings("deprecation") + @Override public String render(Tuple params) throws ParseException, HtmlInputException { return this.toHtml(params); @@ -454,6 +451,7 @@ public void setCollapse(boolean collapse) this.collapse = collapse; } + @Override public String toString() { return this.toHtml(); diff --git a/src/org/molgenis/framework/ui/html/HtmlWidget.java b/src/org/molgenis/framework/ui/html/HtmlWidget.java index f99bebe62..83af1a3f3 100644 --- a/src/org/molgenis/framework/ui/html/HtmlWidget.java +++ b/src/org/molgenis/framework/ui/html/HtmlWidget.java @@ -8,7 +8,7 @@ public abstract class HtmlWidget extends HtmlInput public HtmlWidget(String name, String label) { - super(name, label); + super(name, label, null); } public HtmlWidget(String name) diff --git a/src/org/molgenis/framework/ui/html/HyperlinkInput.java b/src/org/molgenis/framework/ui/html/HyperlinkInput.java index 063f4e665..e2f85bb29 100644 --- a/src/org/molgenis/framework/ui/html/HyperlinkInput.java +++ b/src/org/molgenis/framework/ui/html/HyperlinkInput.java @@ -79,6 +79,7 @@ public String getValue() /** * Override because hyperlink must not be escaped */ + @Override public String getHtmlValue() { return this.getValue(); diff --git a/src/org/molgenis/framework/ui/html/JQueryEditable.java b/src/org/molgenis/framework/ui/html/JQueryEditable.java index fa08f1f48..9c5c0ba05 100644 --- a/src/org/molgenis/framework/ui/html/JQueryEditable.java +++ b/src/org/molgenis/framework/ui/html/JQueryEditable.java @@ -49,6 +49,7 @@ public JQueryEditable(String name, String contents) // return returnString; // } + @Override public String toHtml() { String html = "" diff --git a/src/org/molgenis/framework/ui/html/JQueryTreeView.java b/src/org/molgenis/framework/ui/html/JQueryTreeView.java index d97c5af29..8723d0e2b 100644 --- a/src/org/molgenis/framework/ui/html/JQueryTreeView.java +++ b/src/org/molgenis/framework/ui/html/JQueryTreeView.java @@ -1,5 +1,6 @@ package org.molgenis.framework.ui.html; +import java.util.Collections; import java.util.List; import java.util.Vector; @@ -129,6 +130,6 @@ public String toHtml(List selected) @Override public String toHtml() { - return ""; + return toHtml(Collections. emptyList()); } } \ No newline at end of file diff --git a/src/org/molgenis/framework/ui/html/MolgenisForm.ftl b/src/org/molgenis/framework/ui/html/MolgenisForm.ftl index a830557f3..f387e8cfc 100644 --- a/src/org/molgenis/framework/ui/html/MolgenisForm.ftl +++ b/src/org/molgenis/framework/ui/html/MolgenisForm.ftl @@ -1,7 +1,7 @@
- + <@hidden name="__action"/> diff --git a/src/org/molgenis/framework/ui/html/MrefInput.java b/src/org/molgenis/framework/ui/html/MrefInput.java index 32c6e30f5..3a36e9a21 100644 --- a/src/org/molgenis/framework/ui/html/MrefInput.java +++ b/src/org/molgenis/framework/ui/html/MrefInput.java @@ -121,7 +121,7 @@ public String getValue() @Override public String toHtml(Tuple params) throws HtmlInputException { - return new MrefInput(params).render(); + return new MrefInput(params).render(); } @Override diff --git a/src/org/molgenis/framework/ui/html/NsequenceInput.java b/src/org/molgenis/framework/ui/html/NsequenceInput.java index fce40a8df..97f815b8e 100644 --- a/src/org/molgenis/framework/ui/html/NsequenceInput.java +++ b/src/org/molgenis/framework/ui/html/NsequenceInput.java @@ -47,6 +47,7 @@ public String getValue() return newvalueBuilder.toString(); } + @Override public String getHtmlValue() { return "" + this.getValue().replace("\n", "
") + "
"; diff --git a/src/org/molgenis/framework/ui/html/OnoffInput.java b/src/org/molgenis/framework/ui/html/OnoffInput.java index 07cbd5fe7..9c314c65d 100644 --- a/src/org/molgenis/framework/ui/html/OnoffInput.java +++ b/src/org/molgenis/framework/ui/html/OnoffInput.java @@ -48,6 +48,7 @@ public OnoffInput(Tuple t) /** * */ + @Override public String toHtml() { if (this.isHidden()) @@ -65,6 +66,7 @@ public String toHtml() return html; } + @Override public String getHtmlValue() { String value = (getObject() != null && getObject().equals(true)) ? "yes" : "no"; diff --git a/src/org/molgenis/framework/ui/html/RadioInput.java b/src/org/molgenis/framework/ui/html/RadioInput.java index 263f42476..6e1356d80 100644 --- a/src/org/molgenis/framework/ui/html/RadioInput.java +++ b/src/org/molgenis/framework/ui/html/RadioInput.java @@ -43,6 +43,7 @@ public RadioInput(Tuple t) throws HtmlInputException super(t); } + @Override public String toHtml() { if (this.isHidden()) diff --git a/src/org/molgenis/framework/ui/html/RichtextInput.java b/src/org/molgenis/framework/ui/html/RichtextInput.java index 24e0b6428..923a70ab6 100644 --- a/src/org/molgenis/framework/ui/html/RichtextInput.java +++ b/src/org/molgenis/framework/ui/html/RichtextInput.java @@ -35,6 +35,7 @@ protected RichtextInput() // TODO Auto-generated constructor stub } + @Override public String getCustomHtmlHeaders() { return "" @@ -56,6 +57,7 @@ public String getCustomHtmlHeaders() + "\n onchange_callback : function (editor){tinyMCE.triggerSave();}" + "});" + ""; } + @Override public String toHtml() { return String.format( @@ -66,6 +68,7 @@ public String toHtml() /** * Override because hyperlink must not be escaped */ + @Override public String getHtmlValue() { return this.getValue(); diff --git a/src/org/molgenis/framework/ui/html/SelectMultipleInput.java b/src/org/molgenis/framework/ui/html/SelectMultipleInput.java index bd677bf70..c95e16669 100644 --- a/src/org/molgenis/framework/ui/html/SelectMultipleInput.java +++ b/src/org/molgenis/framework/ui/html/SelectMultipleInput.java @@ -189,6 +189,7 @@ public void addOption(Object value, Object label) this.getOptions().add(new ValueLabel(value.toString(), label.toString())); } + @Override public void setOptions(String... choices) { List choicePairs = new ArrayList(); diff --git a/src/org/molgenis/framework/ui/html/TabbedLayout.java b/src/org/molgenis/framework/ui/html/TabbedLayout.java index e72643dd0..303e384df 100644 --- a/src/org/molgenis/framework/ui/html/TabbedLayout.java +++ b/src/org/molgenis/framework/ui/html/TabbedLayout.java @@ -20,6 +20,7 @@ public void addHyperlink(String name, String hyperlink) super.add(new HyperlinkInput(name, hyperlink)); } + @Override public String render() { Map elements = this.getElements(); diff --git a/src/org/molgenis/framework/ui/html/Table.java b/src/org/molgenis/framework/ui/html/Table.java index 06f19a6b2..d46b61c29 100644 --- a/src/org/molgenis/framework/ui/html/Table.java +++ b/src/org/molgenis/framework/ui/html/Table.java @@ -136,7 +136,8 @@ String printRow(String row, int rowCount) /** * Set the containing div's css style. */ - public HtmlInput setStyle(String style) + @Override + public HtmlInput setStyle(String style) { this.style = style; return this; diff --git a/src/org/molgenis/framework/ui/html/VerticalLayout.java b/src/org/molgenis/framework/ui/html/VerticalLayout.java index af90566df..619890d62 100644 --- a/src/org/molgenis/framework/ui/html/VerticalLayout.java +++ b/src/org/molgenis/framework/ui/html/VerticalLayout.java @@ -2,6 +2,7 @@ public class VerticalLayout extends FlowLayout { + @Override public String render() { StringBuilder strBuilder = new StringBuilder(); diff --git a/src/org/molgenis/framework/ui/html/XrefInput.java b/src/org/molgenis/framework/ui/html/XrefInput.java index 7fd1d8be0..b35df3ce8 100644 --- a/src/org/molgenis/framework/ui/html/XrefInput.java +++ b/src/org/molgenis/framework/ui/html/XrefInput.java @@ -78,9 +78,10 @@ public String getValue() @Override public String toHtml(Tuple params) throws ParseException, HtmlInputException { - return new XrefInput(params).render(); + return new XrefInput(params).render(); } + @Override public void set(Tuple t) throws HtmlInputException { super.set(t); diff --git a/src/org/molgenis/framework/ui/html/render/LinkoutRenderDecorator.java b/src/org/molgenis/framework/ui/html/render/LinkoutRenderDecorator.java index e99fa4a7c..2217ceaf2 100644 --- a/src/org/molgenis/framework/ui/html/render/LinkoutRenderDecorator.java +++ b/src/org/molgenis/framework/ui/html/render/LinkoutRenderDecorator.java @@ -28,6 +28,7 @@ public LinkoutRenderDecorator() mypatterns.put("(http|https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", ""); } + @Override public String render(String in) { String out = in; diff --git a/src/org/molgenis/framework/ui/html/render/SimpleRenderDecorator.java b/src/org/molgenis/framework/ui/html/render/SimpleRenderDecorator.java index cc3b96c35..e5df284ae 100644 --- a/src/org/molgenis/framework/ui/html/render/SimpleRenderDecorator.java +++ b/src/org/molgenis/framework/ui/html/render/SimpleRenderDecorator.java @@ -2,6 +2,7 @@ public class SimpleRenderDecorator implements RenderDecorator { + @Override public String render(String value) { return value; diff --git a/src/org/molgenis/generators/DataTypeGen.java b/src/org/molgenis/generators/DataTypeGen.java index 8f30e5562..5c188216d 100644 --- a/src/org/molgenis/generators/DataTypeGen.java +++ b/src/org/molgenis/generators/DataTypeGen.java @@ -14,6 +14,7 @@ public String getDescription() return "Generates classes for each entity (simple 'bean's or 'pojo's)."; } + @Override public String getType() { return ""; diff --git a/src/org/molgenis/generators/DataTypeGen.java.ftl b/src/org/molgenis/generators/DataTypeGen.java.ftl index 906024e1e..97728806a 100644 --- a/src/org/molgenis/generators/DataTypeGen.java.ftl +++ b/src/org/molgenis/generators/DataTypeGen.java.ftl @@ -7,8 +7,6 @@ <#-- ##--> <#--#####################################################################--> /* File: ${model.getName()}/model/${entity.getName()}.java - * Copyright: GBIC 2000-${year?c}, all rights reserved - * Date: ${date} * Generator: ${generator} ${version} * * THIS FILE HAS BEEN GENERATED, PLEASE DO NOT EDIT! @@ -19,7 +17,6 @@ package ${package}; /** * ${Name(entity)}: ${entity.description}. - * @version ${date} * @author MOLGENIS generator */ <#if entity.abstract> diff --git a/src/org/molgenis/generators/ForEachEntityGenerator.java b/src/org/molgenis/generators/ForEachEntityGenerator.java index 7a3ec1b51..35c3761bd 100644 --- a/src/org/molgenis/generators/ForEachEntityGenerator.java +++ b/src/org/molgenis/generators/ForEachEntityGenerator.java @@ -61,48 +61,38 @@ public void generate(Model model, MolgenisOptions options) throws Exception File targetDir = new File(this.getSourcePath(options) + packageName.replace(".", "/")); if (handwritten) targetDir = new File(this.getHandWrittenPath(options) + packageName.replace(".", "/")); - try + if ((!entity.isAbstract() || this.includeAbstract) && (!this.skipSystem() || !entity.isSystem())) { - if ((!entity.isAbstract() || this.includeAbstract) && (!this.skipSystem() || !entity.isSystem())) + File targetFile = new File(targetDir + "/" + GeneratorHelper.getJavaName(entity.getName()) + getType() + + getExtension()); + if (!handwritten || !targetFile.exists()) { - File targetFile = new File(targetDir + "/" + GeneratorHelper.getJavaName(entity.getName()) - + getType() + getExtension()); - if (!handwritten || !targetFile.exists()) + boolean created = targetDir.mkdirs(); + if (!created && !targetDir.exists()) { - boolean created = targetDir.mkdirs(); - if (!created && !targetDir.exists()) - { - throw new IOException("could not create " + targetDir); - } - - // logger.debug("trying to generated "+targetFile); - templateArgs.put("entity", entity); - templateArgs.put("model", model); - templateArgs.put("db_driver", options.db_driver); - templateArgs.put("template", template.getName()); - templateArgs.put("file", targetDir + "/" + GeneratorHelper.getJavaName(entity.getName()) - + getType() + getExtension()); - templateArgs.put("package", packageName); - - templateArgs.put("databaseImp", options.mapper_implementation); - templateArgs.put("jpa_use_sequence", options.jpa_use_sequence); - - OutputStream targetOut = new FileOutputStream(targetFile); - - template.process(templateArgs, new OutputStreamWriter(targetOut, Charset.forName("UTF-8"))); - targetOut.close(); - - // logger.info("generated " + - // targetFile.getAbsolutePath()); - logger.info("generated " + targetFile); + throw new IOException("could not create " + targetDir); } + + // logger.debug("trying to generated "+targetFile); + templateArgs.put("entity", entity); + templateArgs.put("model", model); + templateArgs.put("db_driver", options.db_driver); + templateArgs.put("template", template.getName()); + templateArgs.put("file", targetDir + "/" + GeneratorHelper.getJavaName(entity.getName()) + + getType() + getExtension()); + templateArgs.put("package", packageName); + + templateArgs.put("databaseImp", options.mapper_implementation); + templateArgs.put("jpa_use_sequence", options.jpa_use_sequence); + + OutputStream targetOut = new FileOutputStream(targetFile); + + template.process(templateArgs, new OutputStreamWriter(targetOut, Charset.forName("UTF-8"))); + targetOut.close(); + + logger.info("generated " + targetFile); } } - catch (Exception e) - { - logger.error("problem generating for " + entity.getName()); - throw e; - } } } diff --git a/src/org/molgenis/generators/ForEachMatrixGenerator.java b/src/org/molgenis/generators/ForEachMatrixGenerator.java index 0d8362082..c594de6b2 100644 --- a/src/org/molgenis/generators/ForEachMatrixGenerator.java +++ b/src/org/molgenis/generators/ForEachMatrixGenerator.java @@ -29,7 +29,7 @@ */ public abstract class ForEachMatrixGenerator extends Generator { - public static final transient Logger logger = Logger.getLogger(ForEachMatrixGenerator.class); + private static final Logger logger = Logger.getLogger(ForEachMatrixGenerator.class); // private boolean includeAbstract = false; diff --git a/src/org/molgenis/generators/Generator.java b/src/org/molgenis/generators/Generator.java index 841148504..da0c3d668 100644 --- a/src/org/molgenis/generators/Generator.java +++ b/src/org/molgenis/generators/Generator.java @@ -23,6 +23,12 @@ public abstract class Generator public abstract void generate(Model model, MolgenisOptions options) throws Exception; + // TODO make abstract (not practical to do at the moment) + public void generate(Model model, MolgenisOptions options, String generatedPath) throws Exception + { + throw new UnsupportedOperationException(); + } + /** * Create a template for the generators to use. * @@ -146,8 +152,5 @@ public String getExtension() return ".java"; } - // private static transient final Logger logger = - // Logger.getLogger(Generator.class.getSimpleName()); - public abstract String getDescription(); } diff --git a/src/org/molgenis/generators/GeneratorHelper.java b/src/org/molgenis/generators/GeneratorHelper.java index 43db070b2..07804a981 100644 --- a/src/org/molgenis/generators/GeneratorHelper.java +++ b/src/org/molgenis/generators/GeneratorHelper.java @@ -29,7 +29,7 @@ public class GeneratorHelper { - private static final transient Logger logger = Logger.getLogger(GeneratorHelper.class.getSimpleName()); + private static final Logger logger = Logger.getLogger(GeneratorHelper.class.getSimpleName()); MolgenisOptions options; MolgenisFieldTypes typeRegistry; @@ -101,7 +101,7 @@ public String getType(Field field) throws Exception if (field == null) return "NULLPOINTER"; try { - return typeRegistry.get(field).getJavaPropertyType(); + return MolgenisFieldTypes.get(field).getJavaPropertyType(); } catch (Exception e) { @@ -158,7 +158,7 @@ public String getCppJavaType(Field field) throws Exception */ public String getSetType(Model model, Field field) throws Exception { - return typeRegistry.get(field).getJavaSetterType(); + return MolgenisFieldTypes.get(field).getJavaSetterType(); } /** @@ -176,12 +176,12 @@ public String getSetType(Model model, Field field) throws Exception */ public String getDefault(Model model, Field field) throws Exception { - return typeRegistry.get(field).getJavaPropertyDefault(); + return MolgenisFieldTypes.get(field).getJavaPropertyDefault(); } public String getJavaAssignment(Field field, String value) throws MolgenisModelException { - return typeRegistry.get(field).getJavaAssignment(value); + return MolgenisFieldTypes.get(field).getJavaAssignment(value); } /** diff --git a/src/org/molgenis/generators/R/RApiGen.R.ftl b/src/org/molgenis/generators/R/RApiGen.R.ftl index 02c502465..94ad21414 100644 --- a/src/org/molgenis/generators/R/RApiGen.R.ftl +++ b/src/org/molgenis/generators/R/RApiGen.R.ftl @@ -150,7 +150,7 @@ MOLGENIS.find<-function( entityName, conditions, .verbose=T ) stop( "arg1: You should provide an entityName (e.g. \"Experiment\")" ) } #todo: use post instead of get - uri <- paste( app_location, findAPIlocation, entityName, sep="" ) + uri <- paste( app_location, findAPIlocation, "/", entityName, sep="" ) ##log # cat("retrieving using uri",uri,"\n") diff --git a/src/org/molgenis/generators/R/RApiGen.java b/src/org/molgenis/generators/R/RApiGen.java index ae5492155..de407e04d 100644 --- a/src/org/molgenis/generators/R/RApiGen.java +++ b/src/org/molgenis/generators/R/RApiGen.java @@ -17,8 +17,9 @@ public class RApiGen extends Generator { - public static final transient Logger logger = Logger.getLogger(RApiGen.class); + private static final Logger logger = Logger.getLogger(RApiGen.class); + @Override public String getDescription() { return "Generates a R file that sources all R files."; diff --git a/src/org/molgenis/generators/R/REntityGen.R.ftl b/src/org/molgenis/generators/R/REntityGen.R.ftl index 3951a6873..3758864d2 100644 --- a/src/org/molgenis/generators/R/REntityGen.R.ftl +++ b/src/org/molgenis/generators/R/REntityGen.R.ftl @@ -98,7 +98,7 @@ find.${RName(entity)} <- function( } - result <- MOLGENIS.find( "${entity.namespace}.${JavaName(entity)}", mget(ls(),environment()), .verbose=.verbose) + result <- MOLGENIS.find( "${JavaName(entity)}", mget(ls(),environment()), .verbose=.verbose) <#if skey_fields?size > 0> #use secondary key as rownames #rownames(result)<-result$${RName(skey_fields?first)} diff --git a/src/org/molgenis/generators/cpp/CPPCassette.java b/src/org/molgenis/generators/cpp/CPPCassette.java index 83bb91903..e3f799b21 100644 --- a/src/org/molgenis/generators/cpp/CPPCassette.java +++ b/src/org/molgenis/generators/cpp/CPPCassette.java @@ -28,6 +28,7 @@ public void generate(final Model model, final MolgenisOptions options) throws Ex { Runnable runnable = new Runnable() { + @Override public void run() { try diff --git a/src/org/molgenis/generators/cpp/CPPMainGen.java b/src/org/molgenis/generators/cpp/CPPMainGen.java index 4784f0d41..94941a0ed 100644 --- a/src/org/molgenis/generators/cpp/CPPMainGen.java +++ b/src/org/molgenis/generators/cpp/CPPMainGen.java @@ -20,7 +20,7 @@ public class CPPMainGen extends ForEachEntityGenerator { - public static final transient Logger logger = Logger.getLogger(CPPMainGen.class); + private static final Logger logger = Logger.getLogger(CPPMainGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/cpp/IncludePerEntityGen.java b/src/org/molgenis/generators/cpp/IncludePerEntityGen.java index e61a16e18..8dcad741b 100644 --- a/src/org/molgenis/generators/cpp/IncludePerEntityGen.java +++ b/src/org/molgenis/generators/cpp/IncludePerEntityGen.java @@ -20,7 +20,7 @@ public class IncludePerEntityGen extends ForEachEntityGenerator { - public static final transient Logger logger = Logger.getLogger(IncludePerEntityGen.class); + private static final Logger logger = Logger.getLogger(IncludePerEntityGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/cpp/MakeFileGen.java b/src/org/molgenis/generators/cpp/MakeFileGen.java index 5caa3616d..7c7205bfa 100644 --- a/src/org/molgenis/generators/cpp/MakeFileGen.java +++ b/src/org/molgenis/generators/cpp/MakeFileGen.java @@ -20,7 +20,7 @@ public class MakeFileGen extends MySqlCreateClassPerTableGen { - public static final transient Logger logger = Logger.getLogger(MakeFileGen.class); + private static final Logger logger = Logger.getLogger(MakeFileGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/cpp/SourcePerEntityGen.java b/src/org/molgenis/generators/cpp/SourcePerEntityGen.java index 18d8adb52..4f161b5c9 100644 --- a/src/org/molgenis/generators/cpp/SourcePerEntityGen.java +++ b/src/org/molgenis/generators/cpp/SourcePerEntityGen.java @@ -20,7 +20,7 @@ public class SourcePerEntityGen extends ForEachEntityGenerator { - public static final transient Logger logger = Logger.getLogger(SourcePerEntityGen.class); + private static final Logger logger = Logger.getLogger(SourcePerEntityGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/csv/CsvExportGen.java b/src/org/molgenis/generators/csv/CsvExportGen.java index 68ad1c698..8659b40d5 100644 --- a/src/org/molgenis/generators/csv/CsvExportGen.java +++ b/src/org/molgenis/generators/csv/CsvExportGen.java @@ -20,7 +20,7 @@ public class CsvExportGen extends MySqlCreateClassPerTableGen { - public static transient final Logger logger = Logger.getLogger(CsvExportGen.class); + private static final Logger logger = Logger.getLogger(CsvExportGen.class); @Override public String getDescription() @@ -54,24 +54,26 @@ public void generate(Model model, MolgenisOptions options) throws Exception logger.info("generated " + target); } - public void generate(Model model, MolgenisOptions options, OutputStream os) throws Exception + @Override + public void generate(Model model, MolgenisOptions options, String target) throws Exception { - Template template = createTemplate("/" + this.getClass().getSimpleName() + ".java.ftl"); + Template template = createTemplate(this.getClass().getSimpleName() + ".java.ftl"); Map templateArgs = createTemplateArguments(options); List entityList = model.getEntities(); entityList = MolgenisModel.sortEntitiesByDependency(entityList, model); // side - // effect? - File target = new File("/git/molgenis/generated/java/org/molgenis/generators/csv/CsvExport.java"); - boolean created = target.getParentFile().mkdirs(); - if (!created && !target.getParentFile().exists()) + // effect? + + File generatedJavaFile = new File(target); + boolean created = generatedJavaFile.getParentFile().mkdirs(); + if (!created && !generatedJavaFile.getParentFile().exists()) { - throw new IOException("could not create " + target.getParentFile()); + throw new IOException("could not create " + generatedJavaFile.getParentFile()); } templateArgs.put("model", model); templateArgs.put("entities", entityList); - templateArgs.put("package", "org.molgenis.generators.csv"); + templateArgs.put("package", this.getClass().getPackage().getName()); OutputStream targetOut = new FileOutputStream(target); template.process(templateArgs, new OutputStreamWriter(targetOut, Charset.forName("UTF-8"))); targetOut.close(); diff --git a/src/org/molgenis/generators/csv/CsvExportGen.java.ftl b/src/org/molgenis/generators/csv/CsvExportGen.java.ftl index 5a3b56175..2ab442fac 100644 --- a/src/org/molgenis/generators/csv/CsvExportGen.java.ftl +++ b/src/org/molgenis/generators/csv/CsvExportGen.java.ftl @@ -6,7 +6,7 @@ <#-- START OF THE OUTPUT ##--> <#-- ##--> <#--#####################################################################--> -/* Date: ${date} +/* * * generator: ${generator} ${version} * diff --git a/src/org/molgenis/generators/csv/CsvImportByIdGen.java b/src/org/molgenis/generators/csv/CsvImportByIdGen.java index d44d91140..048fb4500 100644 --- a/src/org/molgenis/generators/csv/CsvImportByIdGen.java +++ b/src/org/molgenis/generators/csv/CsvImportByIdGen.java @@ -20,7 +20,7 @@ public class CsvImportByIdGen extends MySqlCreateClassPerTableGen { - public static final transient Logger logger = Logger.getLogger(CsvImportByIdGen.class); + private static final Logger logger = Logger.getLogger(CsvImportByIdGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/csv/CsvImportGen.java b/src/org/molgenis/generators/csv/CsvImportGen.java index 252f124ee..26572870d 100644 --- a/src/org/molgenis/generators/csv/CsvImportGen.java +++ b/src/org/molgenis/generators/csv/CsvImportGen.java @@ -20,7 +20,7 @@ public class CsvImportGen extends MySqlCreateClassPerTableGen { - public static final transient Logger logger = Logger.getLogger(CsvImportGen.class); + private static final Logger logger = Logger.getLogger(CsvImportGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/csv/CsvReaderGen.java b/src/org/molgenis/generators/csv/CsvReaderGen.java index 05b599cbe..9d41227da 100644 --- a/src/org/molgenis/generators/csv/CsvReaderGen.java +++ b/src/org/molgenis/generators/csv/CsvReaderGen.java @@ -10,6 +10,7 @@ public String getDescription() return "Generates CsvReaders for each entity"; } + @Override public Boolean skipSystem() { return false; diff --git a/src/org/molgenis/generators/csv/CsvReaderGen.java.ftl b/src/org/molgenis/generators/csv/CsvReaderGen.java.ftl index 73fd15899..4393857c3 100644 --- a/src/org/molgenis/generators/csv/CsvReaderGen.java.ftl +++ b/src/org/molgenis/generators/csv/CsvReaderGen.java.ftl @@ -28,6 +28,7 @@ import java.util.TreeMap; <#break> +import org.apache.commons.collections.CollectionUtils; import org.apache.log4j.Logger; import org.molgenis.framework.db.CsvToDatabase; import org.molgenis.framework.db.Database; @@ -44,7 +45,7 @@ ${imports(model, entity, "")} */ public class ${JavaName(entity)}CsvReader extends CsvToDatabase<${JavaName(entity)}> { - public static final transient Logger logger = Logger.getLogger(${JavaName(entity)}CsvReader.class); + private static final Logger logger = Logger.getLogger(${JavaName(entity)}CsvReader.class); <#assign has_xrefs=false /> <#list allFields(entity) as f><#if (f.type == 'xref' || f.type == 'mref') && f.getXrefLabelNames()[0] != f.xrefFieldName><#assign has_xrefs=true> @@ -70,7 +71,7 @@ public class ${JavaName(entity)}CsvReader extends CsvToDatabase<${JavaName(entit { //cache for entities of which xrefs couldn't be resolved (e.g. if there is a self-refence) //these entities can be updated with their xrefs in a second round when all entities are in the database - final List<${JavaName(entity)}> ${name(entity)}sMissingRefs = new ArrayList<${JavaName(entity)}>(); + List<${JavaName(entity)}> ${name(entity)}sMissingRefs = new ArrayList<${JavaName(entity)}>(); //cache for objects to be imported from file (in batch) final List<${JavaName(entity)}> ${name(entity)}List = new ArrayList<${JavaName(entity)}>(BATCH_SIZE); @@ -90,6 +91,7 @@ public class ${JavaName(entity)}CsvReader extends CsvToDatabase<${JavaName(entit { //resolve foreign keys and copy those entities that could not be resolved to the missingRefs list ${name(entity)}sMissingRefs.addAll(resolveForeignKeys(db, ${name(entity)}List)); + ${name(entity)}List.removeAll(${name(entity)}sMissingRefs); <#if entity.getXrefLabels()?exists> //update objects in the database using xref_label defined secondary key(s) '${csv(entity.getXrefLabels())}' defined in xref_label @@ -110,8 +112,12 @@ public class ${JavaName(entity)}CsvReader extends CsvToDatabase<${JavaName(entit //add remaining elements to the database if(!${name(entity)}List.isEmpty()) { + total.set(total.get() + ${name(entity)}List.size()); + //resolve foreign keys, again keeping track of those entities that could not be solved ${name(entity)}sMissingRefs.addAll(resolveForeignKeys(db, ${name(entity)}List)); + ${name(entity)}List.removeAll(${name(entity)}sMissingRefs); + <#if entity.getXrefLabels()?exists> //update objects in the database using xref_label defined secondary key(s) '${csv(entity.getXrefLabels())}' defined in xref_label db.update(${name(entity)}List,dbAction<#list entity.getXrefLabels() as label>, "${label}"); @@ -121,28 +127,38 @@ public class ${JavaName(entity)}CsvReader extends CsvToDatabase<${JavaName(entit } - //second import round, try to resolve FK's for entities again as they might have referred to entities in the imported list - List<${JavaName(entity)}> ${name(entity)}sStillMissingRefs = resolveForeignKeys(db, ${name(entity)}sMissingRefs); - - //if there are still missing references, throw error and rollback - if(${name(entity)}sStillMissingRefs.size() > 0){ - throw new Exception("Import of '${JavaName(entity)}' objects failed: attempting to resolve in-list references, but there are still ${JavaName(entity)}s referring to ${JavaName(entity)}s that are neither in the database nor in the list of to-be imported ${JavaName(entity)}s. (the first one being: "+${name(entity)}sStillMissingRefs.get(0)+")"); - } - //else update the entities in the database with the found references and return total - else - { + //Try to resolve FK's for entities until all are resolved or we have more then 100 iterations + List<${JavaName(entity)}> ${name(entity)}s = new ArrayList<${JavaName(entity)}>(${name(entity)}sMissingRefs); + + int iterationCount = 0; + + do + { + ${name(entity)}sMissingRefs = resolveForeignKeys(db, ${name(entity)}sMissingRefs); + @SuppressWarnings("unchecked") + List<${JavaName(entity)}> resolvable${name(entity)}s = new ArrayList<${JavaName(entity)}>(CollectionUtils.disjunction(${name(entity)}s, + ${name(entity)}sMissingRefs)); + ${name(entity)}s.removeAll(resolvable${name(entity)}s); + <#if entity.getXrefLabels()?exists> - db.update(${name(entity)}sMissingRefs,DatabaseAction.UPDATE<#list entity.getXrefLabels() as label>, "${label}"); + db.update(resolvable${name(entity)}s,dbAction<#list entity.getXrefLabels() as label>, "${label}"); <#else> - db.update(${name(entity)}sMissingRefs,DatabaseAction.UPDATE<#list entity.getAllKeys()[0].fields as field>, "${field.name}"); + db.update(resolvable${name(entity)}s,dbAction<#list entity.getAllKeys()[0].fields as field>, "${field.name}"); - - //output count - total.set(total.get() + ${name(entity)}List.size()); - logger.info("imported "+total.get()+" ${name(entity)} from CSV"); - - return total.get(); + + if (iterationCount++ > 100) + { + throw new Exception( + "Import of '${name(entity)}' objects failed: attempting to resolve in-list references," + + "but after 100 iterations there are still ${name(entity)}s referring to Individuals that are neither in the database nor in the list of to-be imported ${name(entity)}s." + + "Maybe there is a cyclic reference somewhere ?"); + } } + while (${name(entity)}sMissingRefs.size() > 0); + + logger.info("imported " + total.get() + " ${name(entity)} from CSV"); + + return total.get(); } /** diff --git a/src/org/molgenis/generators/db/CopyMemoryToDatabaseGen.java b/src/org/molgenis/generators/db/CopyMemoryToDatabaseGen.java index 41a3a1e15..0b63f64ed 100644 --- a/src/org/molgenis/generators/db/CopyMemoryToDatabaseGen.java +++ b/src/org/molgenis/generators/db/CopyMemoryToDatabaseGen.java @@ -20,7 +20,7 @@ public class CopyMemoryToDatabaseGen extends MySqlCreateClassPerTableGen { - public static final transient Logger logger = Logger.getLogger(CopyMemoryToDatabaseGen.class); + private static final Logger logger = Logger.getLogger(CopyMemoryToDatabaseGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/db/CsvReaderFactoryGen.java b/src/org/molgenis/generators/db/CsvReaderFactoryGen.java index 25a5df519..2dab23c22 100644 --- a/src/org/molgenis/generators/db/CsvReaderFactoryGen.java +++ b/src/org/molgenis/generators/db/CsvReaderFactoryGen.java @@ -19,7 +19,7 @@ public class CsvReaderFactoryGen extends Generator { - public static final transient Logger logger = Logger.getLogger(CsvReaderFactoryGen.class); + private static final Logger logger = Logger.getLogger(CsvReaderFactoryGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/db/DatabaseFactoryGen.java b/src/org/molgenis/generators/db/DatabaseFactoryGen.java index 6586225b9..e29b3e2f1 100644 --- a/src/org/molgenis/generators/db/DatabaseFactoryGen.java +++ b/src/org/molgenis/generators/db/DatabaseFactoryGen.java @@ -17,7 +17,7 @@ public class DatabaseFactoryGen extends Generator { - public static final transient Logger logger = Logger.getLogger(DatabaseFactoryGen.class); + private static final Logger logger = Logger.getLogger(DatabaseFactoryGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/db/FillMetadataGen.java b/src/org/molgenis/generators/db/FillMetadataGen.java index 2d32d335e..14bf172bb 100644 --- a/src/org/molgenis/generators/db/FillMetadataGen.java +++ b/src/org/molgenis/generators/db/FillMetadataGen.java @@ -19,7 +19,7 @@ public class FillMetadataGen extends Generator { - public static final transient Logger logger = Logger.getLogger(FillMetadataGen.class); + private static final Logger logger = Logger.getLogger(FillMetadataGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/db/FillMetadataGen.java.ftl b/src/org/molgenis/generators/db/FillMetadataGen.java.ftl index 05a8cd9f0..e6a536238 100644 --- a/src/org/molgenis/generators/db/FillMetadataGen.java.ftl +++ b/src/org/molgenis/generators/db/FillMetadataGen.java.ftl @@ -26,7 +26,7 @@ import org.molgenis.framework.security.Login; import org.molgenis.framework.security.SimpleLogin; public class FillMetadata { - protected static final transient Logger logger = Logger.getLogger(FillMetadata.class); + protected static final Logger logger = Logger.getLogger(FillMetadata.class); <#if !metaData> public static void fillMetadata(Database db) throws Exception { logger.info("fillMetadata is Empty!"); diff --git a/src/org/molgenis/generators/db/JDBCDatabaseGen.java b/src/org/molgenis/generators/db/JDBCDatabaseGen.java index b4613252c..02ccfb62b 100644 --- a/src/org/molgenis/generators/db/JDBCDatabaseGen.java +++ b/src/org/molgenis/generators/db/JDBCDatabaseGen.java @@ -20,7 +20,7 @@ public class JDBCDatabaseGen extends Generator { - public static final transient Logger logger = Logger.getLogger(JDBCDatabaseGen.class); + private static final Logger logger = Logger.getLogger(JDBCDatabaseGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/db/JDBCMetaDatabaseGen.java b/src/org/molgenis/generators/db/JDBCMetaDatabaseGen.java index 3dcadab2b..b08e8686a 100644 --- a/src/org/molgenis/generators/db/JDBCMetaDatabaseGen.java +++ b/src/org/molgenis/generators/db/JDBCMetaDatabaseGen.java @@ -20,7 +20,7 @@ public class JDBCMetaDatabaseGen extends Generator { - public static final transient Logger logger = Logger.getLogger(JDBCMetaDatabaseGen.class); + private static final Logger logger = Logger.getLogger(JDBCMetaDatabaseGen.class); @Override public String getDescription() diff --git a/src/org/molgenis/generators/db/JpaEntityListenerGen.java b/src/org/molgenis/generators/db/JpaEntityListenerGen.java index 87637fbe9..7b566ee6a 100644 --- a/src/org/molgenis/generators/db/JpaEntityListenerGen.java +++ b/src/org/molgenis/generators/db/JpaEntityListenerGen.java @@ -1,13 +1,9 @@ package org.molgenis.generators.db; -import org.apache.log4j.Logger; import org.molgenis.generators.ForEachEntityGenerator; -import org.molgenis.generators.ui.PluginControllerGen; public class JpaEntityListenerGen extends ForEachEntityGenerator { - public static final transient Logger logger = Logger.getLogger(PluginControllerGen.class); - public JpaEntityListenerGen() { super(true); // include abstract entities diff --git a/src/org/molgenis/generators/db/JpaMapperGen.java b/src/org/molgenis/generators/db/JpaMapperGen.java index 42902bc52..fba65d16a 100644 --- a/src/org/molgenis/generators/db/JpaMapperGen.java +++ b/src/org/molgenis/generators/db/JpaMapperGen.java @@ -1,12 +1,9 @@ package org.molgenis.generators.db; -import org.apache.log4j.Logger; import org.molgenis.generators.ForEachEntityGenerator; public class JpaMapperGen extends ForEachEntityGenerator { - public static final transient Logger logger = Logger.getLogger(JpaMapperGen.class); - @Override public String getDescription() { @@ -18,5 +15,4 @@ public String getType() { return "JpaMapper"; } - } diff --git a/src/org/molgenis/generators/db/MapperSecurityDecoratorGen.java b/src/org/molgenis/generators/db/MapperSecurityDecoratorGen.java index 408a5e8f5..650ba8903 100644 --- a/src/org/molgenis/generators/db/MapperSecurityDecoratorGen.java +++ b/src/org/molgenis/generators/db/MapperSecurityDecoratorGen.java @@ -31,6 +31,7 @@ public String getType() } // @Override + @Override public void generate(Model model, MolgenisOptions options) throws Exception { Template template = this.createTemplate(this.getClass().getSimpleName() + getExtension() + ".ftl"); diff --git a/src/org/molgenis/generators/db/PersistenceGen.xml.ftl b/src/org/molgenis/generators/db/PersistenceGen.xml.ftl index 7664967ce..f660e1b2d 100644 --- a/src/org/molgenis/generators/db/PersistenceGen.xml.ftl +++ b/src/org/molgenis/generators/db/PersistenceGen.xml.ftl @@ -11,11 +11,17 @@ - - - - + + + + + + + + @@ -27,7 +33,10 @@ + +