Author: bpoussin Date: 2010-06-22 19:03:49 +0200 (Tue, 22 Jun 2010) New Revision: 144 Url: http://nuiton.org/repositories/revision/wikitty/144 Log: modification du support de: - unique - notNull Maintenant ce sont de vrai tag value Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldFactory.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldType.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtension.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/BusinessEntityAbstractGenerator.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldFactory.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldFactory.java 2010-06-22 14:42:44 UTC (rev 143) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldFactory.java 2010-06-22 17:03:49 UTC (rev 144) @@ -31,7 +31,7 @@ } protected void append() { - FieldType fieldType = new FieldType(type, minOccur, maxOccur, unique, minOccur > 0); + FieldType fieldType = new FieldType(type, minOccur, maxOccur); for (Map.Entry<String, String> entry : tagValues.entrySet()) { String tag = entry.getKey(); String value = entry.getValue(); @@ -51,7 +51,7 @@ } public FieldFactory unique() { - unique = true; + addTagValue(FieldType.UNIQUE, "true"); return this; } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldType.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldType.java 2010-06-22 14:42:44 UTC (rev 143) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/FieldType.java 2010-06-22 17:03:49 UTC (rev 144) @@ -38,6 +38,11 @@ /** serialVersionUID. */ private static final long serialVersionUID = -4375308750387837026L; + /** tag/value use for unique */ + static public String UNIQUE = "unique"; + /** tag/value use for not null */ + static public String NOT_NULL = "notNull"; + static public enum TYPE { BOOLEAN, DATE, NUMERIC, STRING, WIKITTY; @@ -58,8 +63,6 @@ protected TYPE type; protected int lowerBound; protected int upperBound; - protected boolean unique = false; - protected boolean notNull = false; /** used to store tag/value used by client side ex: editor=xhtml */ Map<String, String> tagValues = new HashMap<String, String>(); @@ -73,12 +76,6 @@ this.upperBound = upperBound; } - public FieldType(TYPE type, int lowerBound, int upperBound, boolean unique, boolean notNull) { - this(type, lowerBound, upperBound); - this.unique = unique; - this.notNull = notNull; - } - public void addTagValue(String tag, String value) { tagValues.put(tag, value); } @@ -124,12 +121,6 @@ result += "[" + lowerBound + "-*]"; } } - if (isUnique()) { - result += " unique"; - } - if (isNotNull()) { - result += " not null"; - } result += WikittyUtil.tagValuesToString(tagValues); return result; } @@ -221,11 +212,11 @@ } public boolean isUnique() { - return unique; + return "true".equalsIgnoreCase(getTagValue(UNIQUE)); } public boolean isNotNull() { - return notNull; + return "true".equalsIgnoreCase(getTagValue(NOT_NULL)); } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtension.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtension.java 2010-06-22 14:42:44 UTC (rev 143) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyExtension.java 2010-06-22 17:03:49 UTC (rev 144) @@ -139,7 +139,8 @@ nextFields = new LinkedHashMap<String, FieldType>(); for (Map.Entry<String, FieldType> entry : fields.entrySet()) { FieldType type = entry.getValue(); - FieldType nextType = new FieldType(type.getType(), type.getLowerBound(), type.getUpperBound(), type.isUnique(), type.isNotNull()); + FieldType nextType = new FieldType( + type.getType(), type.getLowerBound(), type.getUpperBound()); Set<String> tagNames = type.getTagNames(); if (tagNames != null) { for (String tagName : tagNames) { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-06-22 14:42:44 UTC (rev 143) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-06-22 17:03:49 UTC (rev 144) @@ -92,16 +92,17 @@ static protected Pattern tagValuesPattern = Pattern.compile( tagValuesPatternString, Pattern.DOTALL); /** - * Field pattern parser <li>group 1: type (string) <li>group 2: name - * (string) <li>group 3: lower bound (number) can be null <li>group 4: upper - * bound (number) can be null, mutualy exclusif with group 5 <li>group 5: - * upper bound (n or *) can be null <li>group 6: unique can be null <li> - * group 7: not null can be null <li>group 8: all tag/value (toto=titi - * tutu=tata;lala tata="truc bidulle") + * Field pattern parser + * <li>group 1: type (string) + * <li>group 2: name (string) + * <li>group 3: lower bound (number) can be null + * <li>group 4: upper bound (number) can be null, mutualy exclusif with group 5 + * <li>group 5: upper bound (n or *) can be null + * <li>group 6: all tag/value (toto=titi tutu=tata;lala tata="truc bidulle") */ static protected Pattern fieldPattern = Pattern .compile( - "\\s*(\\w+)\\s+(\\w+)(?:\\s*\\[(\\d+)-(?:(\\d+)|([\\*n]))\\])?(?:\\s+(unique))?(?:\\s+(not null))?((?:\\s+" + "\\s*(\\w+)\\s+(\\w+)(?:\\s*\\[(\\d+)-(?:(\\d+)|([\\*n]))\\])?((?:\\s+" + tagValuesPatternString + ")*)", Pattern.DOTALL); /** @@ -126,17 +127,13 @@ if (upper != null) { fieldType.upperBound = Integer.parseInt(upper); } + String noupper = match.group(5); if (noupper != null) { fieldType.upperBound = FieldType.NOLIMIT; } - String uniqueString = match.group(6); - fieldType.unique = uniqueString != null; - String notNullString = match.group(7); - fieldType.notNull = notNullString != null; - - String tagValues = match.group(8); + String tagValues = match.group(6); Map<String, String> tagValuesMap = tagValuesToMap(tagValues); fieldType.setTagValues(tagValuesMap); Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/BusinessEntityAbstractGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/BusinessEntityAbstractGenerator.java 2010-06-22 14:42:44 UTC (rev 143) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/BusinessEntityAbstractGenerator.java 2010-06-22 17:03:49 UTC (rev 144) @@ -287,18 +287,20 @@ // FIXME EC-20100420 attr.isUnique() always return true for // attributes (maybe use tagValue instead) - String unique = attr.isUnique() ? " unique" : ""; + String unique = ""; + boolean isCollection = (attr.getMaxMultiplicity() != 0 + && attr.getMaxMultiplicity() != 1); + if (isCollection && attr.isUnique()) { + unique = " unique=true"; + } String tagValues = ""; - if ("designation".equals(attr.getName())) { - System.out.println("+++ DEBUG +++ " + attr.getName() + " " + attr.getTagValues()); - } for (String tag : attr.getTagValues().keySet()) { - // EC20100611 : documentation has no sense in wikitty extension definition - if (!"documentation".equals(tag)) { - String value = attr.getTagValue(tag); - tagValues += " " + tag + "=" + value; - } + String value = attr.getTagValue(tag); + value = value.replaceAll("\n", "\\n"); + value = value.replaceAll("\"", "\\\""); + + tagValues += " " + tag + "=\\\"" + value + "\\\""; } /*{"<%=attrType%> <%=attrName%><%=card%><%=unique%><%=tagValues%>"}*/