From: <tri...@us...> - 2008-08-16 11:11:44
|
Revision: 681 http://equanda.svn.sourceforge.net/equanda/?rev=681&view=rev Author: triathlon98 Date: 2008-08-16 11:11:40 +0000 (Sat, 16 Aug 2008) Log Message: ----------- EQ-59 allow specifying unique-for constraint (incomplete) Modified Paths: -------------- trunk/equanda-generate/src/main/java/org/equanda/domain/xml/Constraints.java trunk/equanda-generate/src/main/resources/equanda.dtd trunk/equanda-generate/src/test/java/org/equanda/domain/xml/ConstraintsTest.java Modified: trunk/equanda-generate/src/main/java/org/equanda/domain/xml/Constraints.java =================================================================== --- trunk/equanda-generate/src/main/java/org/equanda/domain/xml/Constraints.java 2008-08-15 14:57:20 UTC (rev 680) +++ trunk/equanda-generate/src/main/java/org/equanda/domain/xml/Constraints.java 2008-08-16 11:11:40 UTC (rev 681) @@ -46,6 +46,8 @@ { @XStreamConverter( ImplicitBooleanConverter.class ) private boolean unique; + @XStreamAlias( "unique-for" ) + private String uniqueForFieldName; @XStreamConverter( ImplicitBooleanConverter.class ) private boolean required; @XStreamConverter( ImplicitBooleanConverter.class ) @@ -70,6 +72,8 @@ private Field field; // field on which the constraint was specified @XStreamOmitField private Table table; // table on which the constraint was specified + @XStreamOmitField + private Field uniqueForfield; // field referenced in the unique-for constraint public void handleTransformation( DomainModel dm, Field field ) { @@ -419,6 +423,12 @@ return unique; } + public boolean isUniqueFor() { return null != uniqueForFieldName; } + + public String getUniqueForFieldName() { return uniqueForFieldName; } + + public Field getUniqueForField() { return uniqueForfield; } + public ValueWhenNull getValueWhenNull() { return valueWhenNull; Modified: trunk/equanda-generate/src/main/resources/equanda.dtd =================================================================== --- trunk/equanda-generate/src/main/resources/equanda.dtd 2008-08-15 14:57:20 UTC (rev 680) +++ trunk/equanda-generate/src/main/resources/equanda.dtd 2008-08-16 11:11:40 UTC (rev 681) @@ -406,6 +406,7 @@ <!ELEMENT constraints ( (unique)?, + (unique-for)?, (required)?, (immutable)?, (immutable-if|mutable-even-if|compare)*, @@ -420,6 +421,11 @@ <!ATTLIST unique convert-class CDATA #IMPLIED> +<!-- + unique-for indicates that a field is unique for a specific value in another field in the same table (typically a link field). + Same as unique, unique-for fields are not allowed to be multiple, calculated, link. +--> +<!ELEMENT unique-for (#PCDATA)> <!ELEMENT immutable EMPTY> <!ELEMENT required EMPTY> Modified: trunk/equanda-generate/src/test/java/org/equanda/domain/xml/ConstraintsTest.java =================================================================== --- trunk/equanda-generate/src/test/java/org/equanda/domain/xml/ConstraintsTest.java 2008-08-15 14:57:20 UTC (rev 680) +++ trunk/equanda-generate/src/test/java/org/equanda/domain/xml/ConstraintsTest.java 2008-08-16 11:11:40 UTC (rev 681) @@ -42,6 +42,7 @@ "\n" + "<constraints>" + " <unique/>" + + " <unique-for>OtherField</unique-for>" + " <required/>" + " <immutable/>" + " <immutable-if />" + @@ -57,6 +58,8 @@ assertTrue( res instanceof Constraints ); Constraints constraints = (Constraints) res; assertTrue( constraints.isUnique() ); + assertTrue( constraints.isUniqueFor() ); + assertEquals( "OtherField", constraints.getUniqueForFieldName() ); assertTrue( constraints.isRequired() ); assertTrue( constraints.isImmutable() ); assertNotNull( constraints.getImmutableIf() ); @@ -84,6 +87,8 @@ assertTrue( res instanceof Constraints ); Constraints constraints = (Constraints) res; assertFalse( constraints.isUnique() ); + assertFalse( constraints.isUniqueFor() ); + assertNull( constraints.getUniqueForFieldName() ); assertFalse( constraints.isRequired() ); assertFalse( constraints.isImmutable() ); assertNotNull( constraints.getImmutableIf() ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |