Skip to content

Commit

Permalink
Story 11422: Pastis - update CodeListVersionss tag for rng profil gen…
Browse files Browse the repository at this point in the history
…eration
  • Loading branch information
mhameg committed May 26, 2023
1 parent 09690b0 commit 911d487
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 24 deletions.
2 changes: 1 addition & 1 deletion api/api-pastis/pastis-commons/generated_test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<rng:data type="token"/>
</rng:element>
<rng:element name="CodeListVersions">
<rng:data type="token"/>
<rng:data type="string"/>
</rng:element>
<rng:element name="DataObjectPackage">
<rng:optional>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
Expand All @@ -55,7 +56,8 @@


@XmlRootElement
@Getter@Setter
@Getter
@Setter
@NoArgsConstructor
public class BaliseXML {

Expand Down Expand Up @@ -115,7 +117,7 @@ public static void buildBaliseXMLTree(ElementProperties node, int profondeur, Ba
}
}

private static void setValueAndDataRNG(ElementProperties node, boolean presenceChildrenNode){
private static void setValueAndDataRNG(ElementProperties node, boolean presenceChildrenNode) {
// If the node has a value
if (null != node.getValue() && !node.getValue().equals(UNDEFINED)) {
valueRNG = new ValueXML();
Expand All @@ -132,14 +134,18 @@ private static void setValueAndDataRNG(ElementProperties node, boolean presenceC
// When a value is declared in a profile element, the <rng:data> tag must be suppressed
// to assure that the generated profile is successfully imported by VITAM
if (null != node.getValueOrData() && !node.getValueOrData().equals(UNDEFINED) &&
node.getValueOrData().equals("data") && !node.getName().equals("CodeListVersions") && null == node.getValue()) {
node.getValueOrData().equals("data") && !node.getName().equals("CodeListVersions") &&
null == node.getValue()) {
dataRNG = new DataXML();
}

if ((node.getName() != null && ((node.getName().equals("CodeListVersions")&& presenceChildrenNode) || presenceChildrenNode) && null == node.getValue())
if ((node.getName() != null
&& ((node.getName().equals("CodeListVersions") && presenceChildrenNode) || presenceChildrenNode)
&& null == node.getValue())
&& (valueRNG == null && RNGConstants.getTypesMap().containsKey(node.getName()))) {
dataRNG = new DataXML();
dataRNG.setDataType(RNGConstants.getTypesMap().get(node.getName()).getLabel());

}

// Sets the type of data (if value or data)
Expand All @@ -153,11 +159,12 @@ private static void setValueAndDataRNG(ElementProperties node, boolean presenceC
}
}

private static void buildBaliseXmlTreeFin(ElementProperties node, int profondeur, BaliseXML parentNode){
private static void buildBaliseXmlTreeFin(ElementProperties node, int profondeur, BaliseXML parentNode) {
BaliseXML currentXmlTag = null;
// 1. Check if it is an element
if (null != elementOrAttributeRNG) {
currentXmlTag = implementAndReturnCurrentXmlTag(parentNode, valueRNG, dataRNG, cardinalityRNG, elementOrAttributeRNG);
currentXmlTag =
implementAndReturnCurrentXmlTag(parentNode, valueRNG, dataRNG, cardinalityRNG, elementOrAttributeRNG);
}
if (null != currentXmlTag) {
currentTagExist(parentNode, currentXmlTag);
Expand All @@ -169,7 +176,7 @@ private static void buildBaliseXmlTreeFin(ElementProperties node, int profondeur
}
}

private static void setDocumentationAnnotationElementAttribute(ElementProperties node){
private static void setDocumentationAnnotationElementAttribute(ElementProperties node) {

setAnnotationDocumentationXML(node);

Expand All @@ -185,11 +192,11 @@ private static void setDocumentationAnnotationElementAttribute(ElementProperties
}

if (elementOrAttributeRNG != null) {
if(null != documentationXML){
if (null != documentationXML) {
elementOrAttributeRNG.getChildren().add(annotationXML);
annotationXML.setParent(elementOrAttributeRNG);
}
if(annotationCommentXML != null){
if (annotationCommentXML != null) {
elementOrAttributeRNG.getChildren().add(annotationCommentXML);
annotationCommentXML.setParent(elementOrAttributeRNG);
}
Expand All @@ -205,25 +212,28 @@ public static void setAnnotationDocumentationXML(ElementProperties node) {
annotationXML.setDocumentationXML(documentationXML);
}

if(node.getName().equals("ArchiveUnit") && node.getEditName() != null){
if (node.getName().equals("ArchiveUnit") && node.getEditName() != null) {
annotationCommentXML = new AnnotationXML();
documentationCommentXML = new DocumentationXML();
documentationCommentXML.setDocumentation(node.getEditName());
annotationCommentXML.setDocumentationXML(documentationCommentXML);
if(node.getDocumentation() != null){
if (node.getDocumentation() != null) {
documentationXML.setDocumentation("Commentaire : " + node.getDocumentation());
annotationXML.setDocumentationXML(documentationXML);
}
}
}

/**
* Set Cardinality to element or attribute Rng
*
* @param node
* @param cardinalityRNG
* @param elementOrAttributeRNG
* @return
*/
private static BaliseXML defineElementOrAttributeCardinality(ElementProperties node, BaliseXML cardinalityRNG, BaliseXML elementOrAttributeRNG) {
private static BaliseXML defineElementOrAttributeCardinality(ElementProperties node, BaliseXML cardinalityRNG,
BaliseXML elementOrAttributeRNG) {
if (node.getCardinality().equals(RNGConstants.Cardinality.ZERO_OR_MORE.getLabel())) {
cardinalityRNG = new ZeroOrMoreXML();
if (elementOrAttributeRNG != null) {
Expand All @@ -245,14 +255,16 @@ private static BaliseXML defineElementOrAttributeCardinality(ElementProperties n

/**
* if element exist, implement it and return
*
* @param parentNode
* @param valueRNG
* @param dataRNG
* @param cardinalityRNG
* @param elementOrAttributeRNG
* @return
*/
private static BaliseXML implementAndReturnCurrentXmlTag(BaliseXML parentNode, ValueXML valueRNG, DataXML dataRNG, BaliseXML cardinalityRNG, BaliseXML elementOrAttributeRNG) {
private static BaliseXML implementAndReturnCurrentXmlTag(BaliseXML parentNode, ValueXML valueRNG, DataXML dataRNG,
BaliseXML cardinalityRNG, BaliseXML elementOrAttributeRNG) {
BaliseXML currentXmlTag;
LOGGER.debug(BaliseXML.class.getName(), "Parsing %s", elementOrAttributeRNG.getName());
// 1.1 Check if the element has cardinality
Expand All @@ -271,6 +283,7 @@ private static BaliseXML implementAndReturnCurrentXmlTag(BaliseXML parentNode, V

/**
* Define valueRNG
*
* @param valueRNG
* @param elementOrAttributeRNG
* @param currentXmlTag
Expand All @@ -283,7 +296,7 @@ private static void valueRng(ValueXML valueRNG, BaliseXML elementOrAttributeRNG,
valueRNG.setParent(currentXmlTag);
}
// If children is Element or Attribute, set accordingly
} else if (currentXmlTag instanceof ElementXML|| currentXmlTag instanceof AttributeXML) {
} else if (currentXmlTag instanceof ElementXML || currentXmlTag instanceof AttributeXML) {
currentXmlTag.setValueXML(valueRNG);
valueRNG.setParent(currentXmlTag);
} else {
Expand All @@ -295,6 +308,7 @@ private static void valueRng(ValueXML valueRNG, BaliseXML elementOrAttributeRNG,

/**
* Define DataRNG of current XML TAG
*
* @param dataRNG
* @param currentXmlTag
*/
Expand All @@ -313,12 +327,14 @@ private static void dataRNG(DataXML dataRNG, BaliseXML currentXmlTag) {

/**
* Define current Xml Tag according to element cardinality
*
* @param parentNode
* @param cardinalityRNG
* @param elementOrAttributeRNG
* @return
*/
private static BaliseXML defineCurrentXmlTag(BaliseXML parentNode, BaliseXML cardinalityRNG, BaliseXML elementOrAttributeRNG) {
private static BaliseXML defineCurrentXmlTag(BaliseXML parentNode, BaliseXML cardinalityRNG,
BaliseXML elementOrAttributeRNG) {
BaliseXML currentXmlTag;
if (null != cardinalityRNG) {
cardinalityRNG.getChildren().add(elementOrAttributeRNG);
Expand All @@ -341,11 +357,13 @@ private static BaliseXML defineCurrentXmlTag(BaliseXML parentNode, BaliseXML car

/**
* If current xml tag not a GrammarXML Object
*
* @param node
* @param profondeur
* @param currentXmlTag
*/
private static void currentTagNotInstanceOfGrammarXML(ElementProperties node, int profondeur, BaliseXML currentXmlTag) {
private static void currentTagNotInstanceOfGrammarXML(ElementProperties node, int profondeur,
BaliseXML currentXmlTag) {
for (ElementProperties next : node.getChildren()) {
if (currentXmlTag instanceof OptionalXML || currentXmlTag instanceof OneOrMoreXML
|| currentXmlTag instanceof ZeroOrMoreXML) {
Expand All @@ -359,6 +377,7 @@ private static void currentTagNotInstanceOfGrammarXML(ElementProperties node, in

/**
* Implement current tag if exist
*
* @param parentNode
* @param currentXmlTag
*/
Expand All @@ -371,7 +390,8 @@ private static void currentTagExist(BaliseXML parentNode, BaliseXML currentXmlTa
.findAny()
.orElse(null);

Boolean optionalHasAlreadyCurrentTag = optionalWithChildren != null && optionalWithChildren.children.contains(currentXmlTag);
Boolean optionalHasAlreadyCurrentTag =
optionalWithChildren != null && optionalWithChildren.children.contains(currentXmlTag);

if (Boolean.FALSE.equals(optionalHasAlreadyCurrentTag)) {
currentXmlTag.setParent(parentNode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public class RNGConstants {
private static final Map<String, DataType> TypesMap = new HashMap<>();

static {
TypesMap.put("CodeListVersions", DataType.TOKEN);
TypesMap.put("CodeListVersions", DataType.STRING);
TypesMap.put("Comment", DataType.STRING);
TypesMap.put("Date", DataType.TOKEN);
TypesMap.put("MessageIdentifier", DataType.TOKEN);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<rng:data type="token"/>
</rng:element>
<rng:element name="CodeListVersions">
<rng:data type="token"/>
<rng:data type="string"/>
</rng:element>
<rng:element name="DataObjectPackage">
<rng:optional>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
"cardinality": null,
"groupOrChoice": null,
"valueOrData": "data",
"dataType": "token",
"dataType": "string",
"value": null,
"documentation": null,
"level": 1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<rng:value type="token">IN-UPPA-0</rng:value>
</rng:element>
<rng:element name="CodeListVersions">
<rng:data type="token"/>
<rng:data type="string"/>
</rng:element>
<rng:element name="DataObjectPackage">
<rng:oneOrMore>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<rng:data type="token"/>
</rng:element>
<rng:element name="CodeListVersions">
<rng:data type="token"/>
<rng:data type="string"/>
</rng:element>
<rng:element name="DataObjectPackage">
<rng:attribute name="xml:id">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<rng:data type="token"/>
</rng:element>
<rng:element name="CodeListVersions">
<rng:data type="token"/>
<rng:data type="string"/>
</rng:element>
<rng:element name="DataObjectPackage">
<rng:optional>
Expand Down

0 comments on commit 911d487

Please sign in to comment.