001    package ca.uhn.hl7v2.validation.impl;
002    
003    
004    /**
005     * <p>
006     * Validation Rule which will not accept any content (i.e. length must be 0).
007     * </p>
008     * <p>
009     * This class is expected to be used for withdrawn fields/components, and will
010     * provide a failure description indicating that the type is withdrawn.
011     * </p>
012     * <p>
013     * If you wish to disable this rule globally, invoke the following code:
014     * </p>
015     * <code>System.setProperty(ca.uhn.hl7v2.validation.impl.WithdrawnDatatypeRule.PROP_DISABLE_RULE, "true");</code>
016     * </p>
017     * Note that this property is only checked the first time the class is loaded (i.e. not at runtime). To disable for an individual parser at runtime, call
018     * </p>
019     * <code>parser.setValidationContext(new NoValidation());</code>
020     */
021    @SuppressWarnings("serial")
022    public class WithdrawnDatatypeRule extends SizeRule {
023    
024        /**
025         * Set the value of a system property to "true" to disable this rule globally.
026         */
027        public static final String PROP_DISABLE_RULE = "ca.uhn.hl7v2.validation.impl.WithdrawnDatatypeRule";
028        
029        private static final int RULE_SIZE;
030        
031        static {
032            if (Boolean.getBoolean(PROP_DISABLE_RULE)) {
033                RULE_SIZE = Integer.MAX_VALUE;
034            } else {
035                RULE_SIZE = 0;
036            }
037        }
038        
039        /**
040         * Constructor
041         */
042        public WithdrawnDatatypeRule() {
043            super(RULE_SIZE);
044        }
045    
046    
047        /**
048         * {@inheritDoc}
049         */
050        public String getDescription() {
051            return "The field/component is withdrawn from the current HL7 version and should not be used. See the JavaDoc for WithdrawnDatatypeRule for information on disabling this rule.";
052        }
053    
054    }