Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Story 11422: Pastis - update CodeListVersionss tag for rng profil generation #1353

Merged
merged 1 commit into from
Jul 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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