java.Helper.xpt Maven / Gradle / Ivy
«EXTENSION java::GeneratorCommons»
«EXTENSION java::Naming»
«EXTENSION java::Helper»
«EXTENSION java::OpenAPIFunctions»
«EXTENSION functions::Class»
«EXTENSION functions::Property»
«EXTENSION functions::SoftLink»
«DEFINE GenerateToStringMethod FOR uml::Class»
«IF this.isCompositeDataType() || this.superClass.isEmpty == true || this.getToStringProperties().select(e|e.isPropertySuppressed() == false).isEmpty == false»
/**
* Method returns a StringBuilder that can be used to create a String representation of this object. The returned StringBuilder also takes care about attributes of super classes.
*
* @return {@link StringBuilder} StringBuilder representing this object. The method never returns null.
*/
«IF this.superClass.isEmpty == false»
@Override
«ENDIF»
public StringBuilder toStringBuilder( String pIndent) {
«IF this.isCompositeDataType()»
StringBuilder lBuilder = new StringBuilder();
lBuilder.append(pIndent);
lBuilder.append(this.getClass().getName());
lBuilder.append(System.lineSeparator());
lBuilder.append(pIndent);
lBuilder.append("«this.getCompositeDateTypePublicFieldName()»: ");
lBuilder.append(«this.getCompositeDateTypePublicFieldName()»);
lBuilder.append(System.lineSeparator());
«ELSE»
«IF this.superClass.isEmpty == true»
StringBuilder lBuilder = new StringBuilder();
lBuilder.append(pIndent);
lBuilder.append(this.getClass().getName());
lBuilder.append(System.lineSeparator());
«ELSE»
StringBuilder lBuilder = super.toStringBuilder(pIndent);
«ENDIF»
«FOREACH this.getToStringProperties().select(e|e.isPropertySuppressed() == false && e.isStatic == false && e.belongsToTransientBidirectionalBackReference() == false) AS attribute»
lBuilder.append(pIndent);
lBuilder.append("«attribute.name»: ");
«EXPAND ToStringValue FOR attribute»
«ENDFOREACH»
«ENDIF»
return lBuilder;
}
/**
* Method creates a new String with the values of all attributes of this class. All references to other objects will be ignored.
*
* @return {@link String} String representation of this object. The method never returns null.
*/
@Override
public String toString( ) {
return this.toStringBuilder("").toString();
}
«ENDIF»
«ENDDEFINE»
«DEFINE ToStringValue FOR uml::Property»
«LET this.getSoftLinkAwarePropertyName() AS propertyName»
«IF association == null »
«IF isMultivalued() == false»
lBuilder.append(«propertyName»);
«ELSE»
if(«propertyName» != null) {
lBuilder.append(java.util.Arrays.toString(«propertyName»));
}
else {
lBuilder.append(" null");
}
«ENDIF»
lBuilder.append(System.lineSeparator());
«ELSE»
«IF isMultivalued() == false»
«IF type.isEnumeration() == false && this.isSoftLink() == false && (type.isPOJO() || type.isServiceObject())»
if(«propertyName» != null) {
lBuilder.append(System.lineSeparator());
lBuilder.append(«propertyName».toStringBuilder(pIndent + " "));
}
else {
lBuilder.append(" null");
lBuilder.append(System.lineSeparator());
}
«ELSE»
lBuilder.append(«propertyName»);
lBuilder.append(System.lineSeparator());
«ENDIF»
«ELSE»
if («propertyName» != null) {
lBuilder.append(«propertyName».size());
lBuilder.append(" element(s)");
}
else {
lBuilder.append(" null");
}
lBuilder.append(System.lineSeparator());
if («propertyName» != null) {
«IF this.isSoftLink()»
«LET ((JMM::SoftLink) this) AS softLink»
for («softLink.getMultivaluedJavaSoftLinkType()» lNext : «propertyName») {
lBuilder.append(pIndent + " ");
lBuilder.append(lNext.toString());
lBuilder.append(System.lineSeparator());
}
«ENDLET»
«ELSE»
for («type.fqn()» lNext : «propertyName») {
«IF type.isEnumeration() == false && (type.isStereotypeApplied("POJO") || type.isStereotypeApplied("ServiceObject"))»
lBuilder.append(lNext.toStringBuilder(pIndent + " "));
«ELSE»
lBuilder.append(pIndent + " ");
lBuilder.append(lNext.toString());
«ENDIF»
lBuilder.append(System.lineSeparator());
}
«ENDIF»
}
«ENDIF»
«ENDIF»
«ENDLET»
«ENDDEFINE»
«DEFINE GenerateDeprecationAnnotation FOR uml::NamedElement»
«IF this.isDeprecated()-»
@Deprecated
«ENDIF-»
«ENDDEFINE»
«DEFINE GenerateConstantsForAttributeNames FOR uml::Class»
«IF generateConstantsForAttributeNames() == true»
«IF this.isCompositeDataType()»
/**
* Constant for the name of attribute "«this.getCompositeDateTypePublicFieldName()»".
*/
public static final String «this.getCompositeDateTypePublicFieldName().toUpperCase()» = "«this.getCompositeDateTypePublicFieldName()»";
«ELSE»
«FOREACH this.ownedAttribute.select(e|e.isPropertySuppressed() == false) AS attr»
«IF attr.isStatic == false»
/**
* Constant for the name of attribute "«attr.name»".
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation FOR attr-»
public static final String «attr.asInstanceVar().toUpperCase()» = "«attr.asInstanceVar()»";
«ENDIF»
«ENDFOREACH»
«ENDIF»
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateGeneratedAnnotation FOR uml::NamedElement»
«IF addGeneratedAnnotation()»
@«getEnterpriseJavaPackage()».annotation.Generated(«getGeneratedAnnotation()»)
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateSuppressWarningsAnnotation FOR uml::NamedElement»
«IF suppressAllWarnings()»
@java.lang.SuppressWarnings("all")
«ENDIF»
«IF getSuppressedWarnings().isEmpty == false»
@java.lang.SuppressWarnings(«FOREACH getSuppressedWarnings() AS warning SEPARATOR ", "»"«warning»"«ENDFOREACH»)
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateEqualsHashCode(String className) FOR uml::Class»
«IF this.isCompositeDataType() && (generateEqualsAndHashCode() || generateEqualsAndHashCodeForCompositeDataTypes())»
@Override
public int hashCode( ) {
return java.util.Objects.hash(«this.getCompositeDateTypePublicFieldName()»);
}
@Override
public boolean equals( Object pOtherObject ) {
boolean lEquals;
if (this == pOtherObject) {
lEquals = true;
}
else if (pOtherObject instanceof «this.fqn()» == false) {
lEquals = false;
}
else {
lEquals = java.util.Objects.equals(«this.getCompositeDateTypePublicFieldName()», ((«this.fqn()») pOtherObject).get«this.getCompositeDateTypePublicFieldName().toFirstUpper()»());
}
return lEquals;
}
«ELSEIF this.isOpenAPIDataType() && this.getAllAttributesFromHierarchy().select(e|e.isPropertySuppressed() == false && e.isStatic == false).size == 1 && this.getAllAttributesFromHierarchy().select(e|e.isPropertySuppressed() == false && e.isStatic == false).first().isMultivalued() == false && (generateEqualsAndHashCode() || generateEqualsAndHashCodeForOpenAPIDataTypes())»
@Override
public int hashCode( ) {
return java.util.Objects.hash(«this.getAllAttributesFromHierarchy().select(e|e.isPropertySuppressed() == false && e.isStatic == false).first().name»);
}
@Override
public boolean equals( Object pOtherObject ) {
boolean lEquals;
if (this == pOtherObject) {
lEquals = true;
}
else if (pOtherObject instanceof «this.fqn()» == false) {
lEquals = false;
}
else {
lEquals = java.util.Objects.equals(«this.getAllAttributesFromHierarchy().select(e|e.isPropertySuppressed() == false && e.isStatic == false).first().name», ((«this.fqn()») pOtherObject).«this.getAllAttributesFromHierarchy().select(e|e.isPropertySuppressed() == false && e.isStatic == false).first().asGetter()»());
}
return lEquals;
}
«ELSEIF generateEqualsAndHashCode() || generateEqualsAndHashCodeForStandardClasses()»
«EXPAND GenerateEqualsAndHashCode(className)»
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateCustomHeadersField FOR uml::Class»
«IF this.hasCustomHeaders()»
/**
* Map contains all custom headers that were set on the object.
*/
private java.util.Map customHeaders = new java.util.HashMap();
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateCustomHeadersOperations FOR uml::Class»
«IF this.hasCustomHeaders()»
/**
* Method returns map with all custom headers that were added
*
* @return {@link Map} Map with all custom headers. The method never returns null. The returned map is unmodifiable.
*/
public java.util.Map getCustomHeaders( ) {
return java.util.Collections.unmodifiableMap(customHeaders);
}
/**
* Method adds the passed values as custom headers. The passed name and value of the http header must be compliant
* with guidelines about http headers.
*
* @param pHeaderName Name of the HTTP header. The parameter must not be null,
* @param pHeaderValue Value of the http header the parameter may be null.
*/
public void addCustomHeader( String pHeaderName, String pHeaderValue ) {
if (pHeaderName != null) {
customHeaders.put(pHeaderName, pHeaderValue);
}
else {
throw new IllegalArgumentException("Parameter 'pHeaderName' must not be null.");
}
}
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateValueOfForOpenAPIDataType FOR uml::Class»
«IF generateValueOfForOpenAPIDataTypes() && this.isOpenAPIDataType()»
«IF this.isCompositeDataType() == false»
«LET this.ownedAttribute.select(e|e.isStatic == false).first() AS theAttribute»
«LET "p" + theAttribute.name.toFirstUpper() AS theParam»
/**
* Method converts the passed {@link String} into an instance of this object.
*
* Please be aware that this method is only intended to be used for deserialization frameworks like JAX-RS. For "normal" object creation builder should be used instead.
*
* @param «theParam» String that should be used to create an instance of this class. The parameter must not be null.
* @return {@link «name»} Instance of the class that matches to the passed string. The method never returns null.
*/
public static «name» valueOf(String «theParam») {
return builder().set«theAttribute.name.toFirstUpper()»(
«IF theAttribute.type.isPrimitiveType()»
«IF theAttribute.type.isIntegerType()»
Integer.parseInt(«theParam»)
«ELSE»«IF theAttribute.type.isCharatcerType()»
«theParam».charAt(0)
«ELSE»
«theAttribute.type.fqn().toFirstUpper()».parse«theAttribute.type.fqn().toFirstUpper()»(«theParam»)
«ENDIF»«ENDIF»
«ELSE»
«IF theAttribute.type.isBigDecimal() || theAttribute.type.isBigInteger()»
new «theAttribute.type.fqn()»(«theParam»)
«ELSE»«IF theAttribute.type.isCharacterType()»
Character.valueOf(«theParam».charAt(0))
«ELSE»
«theAttribute.type.fqn()».valueOf(«theParam»)
«ENDIF»«ENDIF»
«ENDIF»
)
.build();
}
«ENDLET»«ENDLET»
«ELSE»
«LET "p" + this.getCompositeDateTypePublicFieldName().toFirstUpper() AS theParam»
/**
* Method converts the passed {@link String} into an instance of this object.
*
* Please be aware that this method is only intended to be used for deserialization frameworks like JAX-RS. For "normal" object creation builder should be used instead.
*
* @param «theParam» String that should be used to create an instance of this class. The parameter must not be null.
* @return {@link «name»} Instance of the class that matches to the passed string. The method never returns null.
*/
public static «name» valueOf(String «theParam») {
return builder().set«this.getCompositeDateTypePublicFieldName().toFirstUpper()»(«theParam»).build();
}
«ENDLET»
«ENDIF»
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateOfForClass FOR uml::Class»
«IF this.generateOfOperationForClass() && this.isCompositeDataType() == false && isAbstract == false && getTemplateParams().length == 0»
/**
* Convenience method to create new instance of class «name».
*
* «FOREACH this.getAllAttributesForOfOperation() AS attr»
* @param «attr.asParameter()» Value to which {@link #«attr.name»} should be set.
* «ENDFOREACH»
* @return {@link «this.fqn()»}
*/
public static «name» of(
«FOREACH this.getAllAttributesForOfOperation() AS attr SEPARATOR ", "»
«IF attr.isSoftLink()»
«IF attr.isMultivalued()»
«attr.getCollectionType()»<«((JMM::SoftLink)attr).getMultivaluedJavaSoftLinkType()»>
«ELSE»
«((JMM::SoftLink)attr).getJavaSoftLinkType()»
«ENDIF»
«ELSEIF attr.association != null»
«IF attr.isMultivalued()»
«attr.fqn()»
«ELSE»
«attr.type.fqn()»
«ENDIF»
«ELSE»
«attr.fqn()»«IF attr.isMultivalued()»[]«ENDIF»
«ENDIF»
«IF attr.isSoftLink()»
«attr.getSoftLinkPropertyName().asParameter()»
«ELSE»
«attr.asParameter()»
«ENDIF»
«ENDFOREACH») {
«name».Builder lBuilder = «name».builder();
«FOREACH this.getAllAttributesForOfOperation() AS attr»
«IF attr.isSoftLink()»
lBuilder.set«attr.getSoftLinkPropertyName().toFirstUpper()»(«attr.getSoftLinkPropertyName().asParameter()»);
«ELSE»
lBuilder.«attr.asSetter()»(«attr.asParameter()»);
«ENDIF»
«ENDFOREACH»
return lBuilder.build();
}
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateEqualsAndHashCode(String className) FOR uml::Class»
«REM»equals() and hashCode() can only be generated in case of non bi-directional assocations«ENDREM»
«IF this.hasBidirectionalAssociations() == false || this.hasOnlyTransientBidirectionalAssociations()»
@Override
public int hashCode( ) {
«IF ownedAttribute.select(e|e.isPropertySuppressed() == false && e.isTransient() == false && e.isStatic == false).isEmpty == false»
final int lPrime = 31;
«IF parents().isEmpty»
int lResult = 1;
«ELSE»
int lResult = super.hashCode();
«ENDIF»
«FOREACH ownedAttribute.select(e|e.isPropertySuppressed() == false && e.isTransient() == false && e.isStatic == false) AS property»
«IF property.type.isPrimitiveType() && property.isMultivalued() == false»
«IF property.type.isBooleanType()»
lResult = lPrime * lResult + Boolean.hashCode(«property.name»);
«ELSEIF property.type.isLongType()»
lResult = lPrime * lResult + Long.hashCode(«property.name»);
«ELSEIF property.type.isFloatType()»
lResult = lPrime * lResult + Float.hashCode(«property.name»);
«ELSEIF property.type.isDoubleType()»
lResult = lPrime * lResult + Double.hashCode(«property.name»);
«ELSE»
lResult = lPrime * lResult + «property.name»;
«ENDIF»
«REM»Handle arrays«ENDREM»
«ELSEIF property.isMultivalued() && property.association == null»
lResult = lPrime * lResult + java.util.Arrays.hashCode(«property.name»);
«ELSE»
«IF property.isSoftLink()»
lResult = lPrime * lResult + java.util.Objects.hashCode(«property.getSoftLinkPropertyName()»);
«ELSE»
lResult = lPrime * lResult + java.util.Objects.hashCode(«property.name»);
«ENDIF»
«ENDIF»
«ENDFOREACH»
«IF this.hasCustomHeaders()»
lResult = lPrime * lResult + java.util.Objects.hashCode(customHeaders);
«ENDIF»
return lResult;
«ELSE»
«IF parents().isEmpty»
return 1;
«ELSE»
return super.hashCode();
«ENDIF»
«ENDIF»
}
@Override
public boolean equals( Object pObject ) {
boolean lEquals;
if (this == pObject) {
lEquals = true;
}
else if (pObject == null) {
lEquals = false;
}
«IF parents().isEmpty == false»
else if (!super.equals(pObject)) {
lEquals = false;
}
«ENDIF»
else if (this.getClass() != pObject.getClass()) {
lEquals = false;
}
else {
«IF ownedAttribute.select(e|e.isPropertySuppressed() == false && e.isTransient() == false && e.isStatic == false).isEmpty == false»
«className»«IF this.hasTemplateParameter()»>«ENDIF» lOther = («className»«IF this.hasTemplateParameter()»>«ENDIF») pObject;
lEquals =
«FOREACH ownedAttribute.select(e|e.isPropertySuppressed() == false && e.isTransient() == false && e.isStatic == false) AS property SEPARATOR " && "»
«IF property.type.isPrimitiveType() && property.isMultivalued() == false»
«IF property.type.isDoubleType()»
Double.compare(«property.name», lOther.«property.name») == 0
«ELSEIF property.type.isFloatType()»
Float.compare(«property.name», lOther.«property.name») == 0
«ELSE»
«property.name» == lOther.«property.name»
«ENDIF»
«ELSEIF property.isMultivalued() && property.association == null»
java.util.Arrays.equals(«property.name», lOther.«property.name»)
«ELSE»
«IF property.isSoftLink()»
java.util.Objects.equals(«property.getSoftLinkPropertyName()», lOther.«property.getSoftLinkPropertyName()»)
«ELSE»
java.util.Objects.equals(«property.name», lOther.«property.name»)
«ENDIF»
«ENDIF»
«ENDFOREACH»
«IF this.hasCustomHeaders()»
&& java.util.Objects.equals(customHeaders, lOther.customHeaders)
«ENDIF»
;
«ELSE»
lEquals = true;
«ENDIF»
}
return lEquals;
}
«ENDIF»
«ENDDEFINE»