GenerationProperties.java
/*
* Copyright (C) 2011 Everit Kft. (http://www.everit.biz)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.everit.persistence.lqmg;
/**
* This class store all parameters which is required to the JAVA classes generation.
*/
public class GenerationProperties {
/**
* The paths to the bundles (directory path of jar file path).
*/
public final String[] bundleLocations;
/**
* A schema name with optional filter expression that points to a bundle schema capability. E.g.:
* userMgmt;filter:="(version=2)"
*/
public String capability;
/**
* Optional path of a configuration XML. In case this configuration exists, the rules in it are
* stronger than the rules specified at the capability attributes in the bundles.
*/
public String configurationPath;
/**
* Default schema on SQL Connection to be used during generating tables.
*/
public String defaultSchema;
/**
* If true, LQMG will update the unresolved bundles in the way that all of their unsatisfied
* requirements will be modified to be optional.
*/
public boolean hackWires = true;
/**
* If true, inner classes will be generated for foreign and primary keys.
*/
public boolean innerClassesForKeys = true;
/**
* Comma separated list of java packages that should be generated. Null means that all packages
* should be generated. Classes for tables coming from Liquibase (changelog and lock tables) are
* never generated.
*/
public String[] packages = new String[0];
/**
* The folder where source will be generated to.
*/
public String targetFolder;
/**
* The simple constructor.
*
* @param capability
* A schema name with optional capability filter where liquibase should start searching
* for changesets.
* @param targetFolder
* the folder where source will be generated to.
*/
public GenerationProperties(final String capability, final String[] bundleLocations,
final String targetFolder) {
this.targetFolder = targetFolder;
this.bundleLocations = bundleLocations;
this.capability = capability;
}
public void setCapability(final String schema) {
capability = schema;
}
public void setConfigurationPath(final String configurationPath) {
this.configurationPath = configurationPath;
}
public void setDefaultSchema(final String defaultSchema) {
this.defaultSchema = defaultSchema;
}
public void setHackWires(final boolean strict) {
hackWires = strict;
}
public void setInnerClassesForKeys(final boolean innerClassesForKeys) {
this.innerClassesForKeys = innerClassesForKeys;
}
public void setPackages(final String[] packages) {
validatePackages(packages);
this.packages = packages;
}
public void setTargetFolder(final String targetFolder) {
this.targetFolder = targetFolder;
}
private void validatePackages(final String[] packages) {
if (packages == null) {
throw new IllegalArgumentException(
"Packages cannot be null. In case all packages should be included, a"
+ " zero length array should be used.");
}
}
}