io.github.jeddict.jpa.spec.TableGenerator Maven / Gradle / Ivy
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6
// See http://java.sun.com/xml/jaxb
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2014.01.21 at 01:52:19 PM IST
//
package io.github.jeddict.jpa.spec;
import io.github.jeddict.jpa.spec.validator.TableGeneratorValidator;
import io.github.jeddict.source.AnnotatedMember;
import io.github.jeddict.source.AnnotationExplorer;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import static java.util.stream.Collectors.toCollection;
import static java.util.stream.Collectors.toList;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.eclipse.persistence.internal.jpa.metadata.sequencing.TableGeneratorMetadata;
/**
*
*
* @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) public @interface
* TableGenerator { String name(); String table() default ""; String catalog()
* default ""; String schema() default ""; String pkColumnName() default "";
* String valueColumnName() default ""; String pkColumnValue() default ""; int
* initialValue() default 0; int allocationSize() default 50; UniqueConstraint[]
* uniqueConstraints() default {}; Indexes[] indexes() default {}; }
*
*
*
*
* Java class for table-generator complex type.
*
*
* The following schema fragment specifies the expected content contained within
* this class.
*
*
* <complexType name="table-generator">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="unique-constraint" type="{http://xmlns.jcp.org/xml/ns/persistence/orm}unique-constraint" maxOccurs="unbounded" minOccurs="0"/>
* <element name="index" type="{http://xmlns.jcp.org/xml/ns/persistence/orm}index" maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="table" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="catalog" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="schema" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="pk-column-name" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="value-column-name" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="pk-column-value" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="initial-value" type="{http://www.w3.org/2001/XMLSchema}int" />
* <attribute name="allocation-size" type="{http://www.w3.org/2001/XMLSchema}int" />
* </restriction>
* </complexContent>
* </complexType>
*
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "table-generator", propOrder = {
"description",
"uniqueConstraint",
"index"
})
@XmlJavaTypeAdapter(value = TableGeneratorValidator.class)
public class TableGenerator {
protected String description;
@XmlElement(name = "unique-constraint")
protected Set uniqueConstraint;
protected List index;
@XmlAttribute(name = "name", required = true)
protected String name;
@XmlAttribute(name = "table")
protected String table;
@XmlAttribute(name = "catalog")
protected String catalog;
@XmlAttribute(name = "schema")
protected String schema;
@XmlAttribute(name = "pk-column-name")
protected String pkColumnName;
@XmlAttribute(name = "value-column-name")
protected String valueColumnName;
@XmlAttribute(name = "pk-column-value")
protected String pkColumnValue;
@XmlAttribute(name = "initial-value")
protected Integer initialValue;
@XmlAttribute(name = "allocation-size")
protected Integer allocationSize;
public static TableGenerator load(AnnotatedMember member) {
TableGenerator tableGenerator = null;
Optional tableGeneratorOpt = member.getAnnotation(jakarta.persistence.TableGenerator.class);
if (tableGeneratorOpt.isPresent()) {
tableGenerator = new TableGenerator();
AnnotationExplorer annotation = tableGeneratorOpt.get();
annotation.getString("name").ifPresent(tableGenerator::setName);
annotation.getString("description").ifPresent(tableGenerator::setDescription);
annotation.getString("table").ifPresent(tableGenerator::setTable);
annotation.getString("catalog").ifPresent(tableGenerator::setCatalog);
annotation.getString("schema").ifPresent(tableGenerator::setSchema);
annotation.getString("pkColumnName").ifPresent(tableGenerator::setPkColumnName);
annotation.getString("valueColumnName").ifPresent(tableGenerator::setValueColumnName);
annotation.getString("pkColumnValue").ifPresent(tableGenerator::setPkColumnValue);
annotation.getInt("initialValue").ifPresent(tableGenerator::setInitialValue);
annotation.getInt("allocationSize").ifPresent(tableGenerator::setAllocationSize);
tableGenerator.uniqueConstraint
= annotation.getAnnotationList("uniqueConstraints")
.map(UniqueConstraint::load)
.collect(toCollection(LinkedHashSet::new));
tableGenerator.index
= annotation.getAnnotationList("indexes")
.map(Index::load)
.collect(toList());
}
return tableGenerator;
}
/**
* Gets the value of the description property.
*
* @return possible object is {@link String }
*
*/
public String getDescription() {
return description;
}
/**
* Sets the value of the description property.
*
* @param value allowed object is {@link String }
*
*/
public void setDescription(String value) {
this.description = value;
}
/**
* Gets the value of the uniqueConstraint property.
*
*
* This accessor method returns a reference to the live list, not a
* snapshot. Therefore any modification you make to the returned list will
* be present inside the JAXB object. This is why there is not a
* set
method for the uniqueConstraint property.
*
*
* For example, to add a new item, do as follows:
*
* getUniqueConstraint().add(newItem);
*
*
*
*
* Objects of the following type(s) are allowed in the list
* {@link UniqueConstraint }
*
*
*/
public Set getUniqueConstraint() {
if (uniqueConstraint == null) {
uniqueConstraint = new LinkedHashSet<>();
}
return this.uniqueConstraint;
}
/**
* Gets the value of the index property.
*
*
* This accessor method returns a reference to the live list, not a
* snapshot. Therefore any modification you make to the returned list will
* be present inside the JAXB object. This is why there is not a
* set
method for the index property.
*
*
* For example, to add a new item, do as follows:
*
* getIndex().add(newItem);
*
*
*
*
* Objects of the following type(s) are allowed in the list {@link Index }
*
*
*/
public List getIndex() {
if (index == null) {
index = new ArrayList<>();
}
return this.index;
}
/**
* Gets the value of the name property.
*
* @return possible object is {@link String }
*
*/
public String getName() {
return name;
}
/**
* Sets the value of the name property.
*
* @param value allowed object is {@link String }
*
*/
public void setName(String value) {
this.name = value;
}
/**
* Gets the value of the table property.
*
* @return possible object is {@link String }
*
*/
public String getTable() {
return table;
}
/**
* Sets the value of the table property.
*
* @param value allowed object is {@link String }
*
*/
public void setTable(String value) {
this.table = value;
}
/**
* Gets the value of the catalog property.
*
* @return possible object is {@link String }
*
*/
public String getCatalog() {
return catalog;
}
/**
* Sets the value of the catalog property.
*
* @param value allowed object is {@link String }
*
*/
public void setCatalog(String value) {
this.catalog = value;
}
/**
* Gets the value of the schema property.
*
* @return possible object is {@link String }
*
*/
public String getSchema() {
return schema;
}
/**
* Sets the value of the schema property.
*
* @param value allowed object is {@link String }
*
*/
public void setSchema(String value) {
this.schema = value;
}
/**
* Gets the value of the pkColumnName property.
*
* @return possible object is {@link String }
*
*/
public String getPkColumnName() {
return pkColumnName;
}
/**
* Sets the value of the pkColumnName property.
*
* @param value allowed object is {@link String }
*
*/
public void setPkColumnName(String value) {
this.pkColumnName = value;
}
/**
* Gets the value of the valueColumnName property.
*
* @return possible object is {@link String }
*
*/
public String getValueColumnName() {
return valueColumnName;
}
/**
* Sets the value of the valueColumnName property.
*
* @param value allowed object is {@link String }
*
*/
public void setValueColumnName(String value) {
this.valueColumnName = value;
}
/**
* Gets the value of the pkColumnValue property.
*
* @return possible object is {@link String }
*
*/
public String getPkColumnValue() {
return pkColumnValue;
}
/**
* Sets the value of the pkColumnValue property.
*
* @param value allowed object is {@link String }
*
*/
public void setPkColumnValue(String value) {
this.pkColumnValue = value;
}
/**
* Gets the value of the initialValue property.
*
* @return possible object is {@link Integer }
*
*/
public Integer getInitialValue() {
return initialValue;
}
/**
* Sets the value of the initialValue property.
*
* @param value allowed object is {@link Integer }
*
*/
public void setInitialValue(Integer value) {
this.initialValue = value;
}
/**
* Gets the value of the allocationSize property.
*
* @return possible object is {@link Integer }
*
*/
public Integer getAllocationSize() {
return allocationSize;
}
/**
* Sets the value of the allocationSize property.
*
* @param value allowed object is {@link Integer }
*
*/
public void setAllocationSize(Integer value) {
this.allocationSize = value;
}
public TableGeneratorMetadata getAccessor() {
TableGeneratorMetadata accessor = new TableGeneratorMetadata();
accessor.setName(table);
accessor.setAllocationSize(allocationSize);
accessor.setCatalog(catalog);
accessor.setInitialValue(initialValue);
accessor.setSchema(schema);
accessor.setPkColumnName(pkColumnName);
accessor.setPkColumnValue(pkColumnValue);
accessor.setValueColumnName(valueColumnName);
// accessr.setDatabaseTable(new DatabaseTable(table, ""));
accessor.setGeneratorName(name);
accessor.setUniqueConstraints(getUniqueConstraint().stream()
.map(UniqueConstraint::getAccessor)
.collect(toList()));
accessor.setIndexes(getIndex().stream()
.map(Index::getAccessor)
.collect(toList()));
return accessor;
}
}