krysalis-version/src/java/org/krysalis/version/constraint ConstraintLogger.java,NONE,1.1 VersionIdentifierConstraint.java,1.5,1.6 Constraint.java,1.1,1.2 ConstraintConclusion.java,1.3,1.4 VersionDataComparisonConstraint.java,1.7,1.8 ConstraintSet.java,1.3,1.4 VersionDataRangeConstraint.java,1.6,1.7 ConstraintEvaluator.java,1.1,1.2

[email protected]
Newsgroups gmane.comp.krysalis.sandbox
Message-ID <[email protected]>
Update of /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/constraint
In directory sc8-pr-cvs1:/tmp/cvs-serv18085/src/java/org/krysalis/version/constraint

Modified Files:
	VersionIdentifierConstraint.java Constraint.java 
	ConstraintConclusion.java VersionDataComparisonConstraint.java 
	ConstraintSet.java VersionDataRangeConstraint.java 
	ConstraintEvaluator.java 
Added Files:
	ConstraintLogger.java 
Log Message:
1) Refactored some shared behaviours
2) Worked on constraints colelcting/evaluating/result sets...

--- NEW FILE: ConstraintLogger.java ---
/*
The Krysalis Patchy Software License, Version 1.1_01

Copyright (c) 2002-2003 Nicola Ken Barozzi.  All rights reserved.

This Licence is compatible with the BSD licence as described and 
approved by http://www.opensource.org/, and is based on the
Apache Software Licence Version 1.1.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in
   the documentation and/or other materials provided with the
   distribution.

3. The end-user documentation included with the redistribution,
   if any, must include the following acknowledgment:
      "This product includes software developed for project 
       Krysalis (http://www.krysalis.org/)."
   Alternately, this acknowledgment may appear in the software itself,
   if and wherever such third-party acknowledgments normally appear.

4. The names "Krysalis" and "Nicola Ken Barozzi" and
   "Krysalis Centipede" must not be used to endorse or promote products
   derived from this software without prior written permission. For
   written permission, please contact [email protected].

5. Products derived from this software may not be called "Krysalis",
   "Krysalis Centipede", nor may "Krysalis" appear in their name, without
    prior written permission of Nicola Ken Barozzi.

6. This software may contain voluntary contributions made by many 
   individuals, who decided to donate the code to this project in respect 
   of this licence.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
====================================================================
*/
package org.krysalis.version.constraint;

import org.krysalis.version.internal.InternalVersionConstants;
import org.krysalis.version.util.logging.LogHandle;
import org.krysalis.version.util.logging.LogHandleFactory;

public class ConstraintLogger {
    public static LogHandle g_log = null;

    static {
        g_log =
            LogHandleFactory.getLogHandle(
                InternalVersionConstants.VERSION_PACKAGE + ".constraint");
    }
}
Index: VersionIdentifierConstraint.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/constraint/VersionIdentifierConstraint.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** VersionIdentifierConstraint.java	16 Feb 2003 14:43:20 -0000	1.5
--- VersionIdentifierConstraint.java	5 Mar 2003 19:57:17 -0000	1.6
***************
*** 60,64 ****
  import org.krysalis.version.resolve.VersionMetadata;
  import org.krysalis.version.resolve.VersionResolver;
! import org.krysalis.version.util.DebugUtils;
  
  /**
--- 60,65 ----
  import org.krysalis.version.resolve.VersionMetadata;
  import org.krysalis.version.resolve.VersionResolver;
! import org.krysalis.version.util.debug.DebugUtils;
! import org.krysalis.version.util.note.AnnotationScratchpad;
  
  /**
***************
*** 79,83 ****
       * @see org.krysalis.version.constraint.Constraint#check()
       */
!     public ConstraintConclusion check() throws VersionException {
  
          VersionMetadata ref =
--- 80,84 ----
       * @see org.krysalis.version.constraint.Constraint#check()
       */
!     public ConstraintConclusion check(AnnotationScratchpad pad) throws VersionException {
  
          VersionMetadata ref =

Index: Constraint.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/constraint/Constraint.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Constraint.java	3 Feb 2003 07:28:33 -0000	1.1
--- Constraint.java	5 Mar 2003 19:57:18 -0000	1.2
***************
*** 57,60 ****
--- 57,61 ----
  
  import org.krysalis.version.exception.VersionException;
+ import org.krysalis.version.util.note.AnnotationScratchpad;
  
  /**
***************
*** 62,65 ****
   */
  public interface Constraint {
!     ConstraintConclusion check() throws VersionException;
  }
--- 63,67 ----
   */
  public interface Constraint {
!     ConstraintConclusion check(AnnotationScratchpad pad)
!         throws VersionException;
  }

Index: ConstraintConclusion.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/constraint/ConstraintConclusion.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ConstraintConclusion.java	17 Feb 2003 06:27:27 -0000	1.3
--- ConstraintConclusion.java	5 Mar 2003 19:57:22 -0000	1.4
***************
*** 94,123 ****
      public static final ConstraintConclusion SATISFIED =
          new ConstraintConclusion(CONCLUSION_SATISFIED);
!         
      /** Certainaly Satisfied */
      public static final ConstraintConclusion CERTAINLY_SATISFIED =
!         new ConstraintConclusion(CONCLUSION_SATISFIED|CONCLUSION_CERTAIN);
      /** Uncertainaly Satisfied */
      public static final ConstraintConclusion UNCERTAINLY_SATISFIED =
!         new ConstraintConclusion(CONCLUSION_SATISFIED|CONCLUSION_UNCERTAIN);
!         
      /** Unsatisfied */
      public static final ConstraintConclusion UNSATISFIED =
          new ConstraintConclusion(CONCLUSION_UNSATISFIED);
      /** Uncertinaly Unsatisfied */
!         public static final ConstraintConclusion UNCERTAINLY_UNSATISFIED =
!             new ConstraintConclusion(CONCLUSION_UNSATISFIED|CONCLUSION_UNCERTAIN);
      /** Certinaly Unsatisfied */
!         public static final ConstraintConclusion CERTAINLY_UNSATISFIED =
!                 new ConstraintConclusion(CONCLUSION_UNSATISFIED|CONCLUSION_CERTAIN);
  
!      /** Certinaly Unsatisfied */
!         public static final ConstraintConclusion UNKNOWN =
!                 new ConstraintConclusion(CONCLUSION_UNKNOWN);
  
      /** Collections */
!     public static final ArrayList CONSCLUSIONS = new ArrayList();
  
!    //public static final HashMap WORD_FOR_CONCLUSION = new HashMap();
      //public static final HashMap CONCLUSION_FOR_WORD = new HashMap();
  
--- 94,123 ----
      public static final ConstraintConclusion SATISFIED =
          new ConstraintConclusion(CONCLUSION_SATISFIED);
! 
      /** Certainaly Satisfied */
      public static final ConstraintConclusion CERTAINLY_SATISFIED =
!         new ConstraintConclusion(CONCLUSION_SATISFIED | CONCLUSION_CERTAIN);
      /** Uncertainaly Satisfied */
      public static final ConstraintConclusion UNCERTAINLY_SATISFIED =
!         new ConstraintConclusion(CONCLUSION_SATISFIED | CONCLUSION_UNCERTAIN);
! 
      /** Unsatisfied */
      public static final ConstraintConclusion UNSATISFIED =
          new ConstraintConclusion(CONCLUSION_UNSATISFIED);
      /** Uncertinaly Unsatisfied */
!     public static final ConstraintConclusion UNCERTAINLY_UNSATISFIED =
!         new ConstraintConclusion(CONCLUSION_UNSATISFIED | CONCLUSION_UNCERTAIN);
      /** Certinaly Unsatisfied */
!     public static final ConstraintConclusion CERTAINLY_UNSATISFIED =
!         new ConstraintConclusion(CONCLUSION_UNSATISFIED | CONCLUSION_CERTAIN);
  
!     /** Certinaly Unsatisfied */
!     public static final ConstraintConclusion UNKNOWN =
!         new ConstraintConclusion(CONCLUSION_UNKNOWN);
  
      /** Collections */
!     public static final ArrayList CONCLUSIONS = new ArrayList();
  
!     //public static final HashMap WORD_FOR_CONCLUSION = new HashMap();
      //public static final HashMap CONCLUSION_FOR_WORD = new HashMap();
  
***************
*** 125,133 ****
  
      static {
!         CONSCLUSIONS.add(ConstraintConclusion.CERTAINLY_SATISFIED);
!         CONSCLUSIONS.add(ConstraintConclusion.UNCERTAINLY_SATISFIED);
!         CONSCLUSIONS.add(ConstraintConclusion.CERTAINLY_UNSATISFIED);
!         CONSCLUSIONS.add(ConstraintConclusion.UNCERTAINLY_UNSATISFIED);
!         CONSCLUSIONS.add(ConstraintConclusion.UNKNOWN);
      }
  
--- 125,133 ----
  
      static {
!         CONCLUSIONS.add(ConstraintConclusion.CERTAINLY_SATISFIED);
!         CONCLUSIONS.add(ConstraintConclusion.UNCERTAINLY_SATISFIED);
!         CONCLUSIONS.add(ConstraintConclusion.CERTAINLY_UNSATISFIED);
!         CONCLUSIONS.add(ConstraintConclusion.UNCERTAINLY_UNSATISFIED);
!         CONCLUSIONS.add(ConstraintConclusion.UNKNOWN);
      }
  
***************
*** 136,147 ****
      }
  
!     /*public String getAsString() {
!         String conclusion = (String) WORD_FOR_CONCLUSION.get(this);
!     
!         if (null == conclusion)
!             conclusion = UNSET_WORD;
!     
!         return conclusion;
!     }*/
  
      /*public static ConstraintConclusion getFromString(String conclusionStr)
--- 136,156 ----
      }
  
!     public String getAsString() {
!         StringBuffer conclusion = new StringBuffer();
! 
!         if (isSatisfied(this))
!             conclusion.append("Satisfied");
!         else
!             conclusion.append("Not Satisfied");
! 
!         conclusion.append("|");
! 
!         if (isCertain(this))
!             conclusion.append("Certain");
!         else
!             conclusion.append("Not Certain");
! 
!         return conclusion.toString();
!     }
  
      /*public static ConstraintConclusion getFromString(String conclusionStr)
***************
*** 149,153 ****
          ConstraintConclusion conclusion =
              (ConstraintConclusion) CONCLUSION_FOR_WORD.get(conclusionStr);
! 
          if (null == conclusion)
              throw new VersionException(
--- 158,162 ----
          ConstraintConclusion conclusion =
              (ConstraintConclusion) CONCLUSION_FOR_WORD.get(conclusionStr);
!     
          if (null == conclusion)
              throw new VersionException(
***************
*** 167,175 ****
          else if (CONCLUSION_SATISFIED == conclusionNo)
              conclusion = SATISFIED;
! 
          if (null == conclusion)
              throw new VersionException(
                  "Unknown conclusion [" + conclusionNo + "]");
! 
          return conclusion;
      }*/
--- 176,184 ----
          else if (CONCLUSION_SATISFIED == conclusionNo)
              conclusion = SATISFIED;
!     
          if (null == conclusion)
              throw new VersionException(
                  "Unknown conclusion [" + conclusionNo + "]");
!     
          return conclusion;
      }*/
***************
*** 191,195 ****
  
      public String toString() {
!         return "(" + m_conclusionSet + ":" /*+ getAsString()*/ + ")";
      }
  
--- 200,204 ----
  
      public String toString() {
!         return "(" + m_conclusionSet + ":" + getAsString() + ")";
      }
  
***************
*** 235,239 ****
  
      public static boolean isSatisfied(int conclusionSet) {
!         return (0 != (conclusionSet & ConstraintConclusion.CONCLUSION_SATISFIED));
      }
  
--- 244,249 ----
  
      public static boolean isSatisfied(int conclusionSet) {
!         return (
!             0 != (conclusionSet & ConstraintConclusion.CONCLUSION_SATISFIED));
      }
  

Index: VersionDataComparisonConstraint.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/constraint/VersionDataComparisonConstraint.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** VersionDataComparisonConstraint.java	16 Feb 2003 14:43:20 -0000	1.7
--- VersionDataComparisonConstraint.java	5 Mar 2003 19:57:26 -0000	1.8
***************
*** 63,66 ****
--- 63,67 ----
  import org.krysalis.version.resolve.VersionMetadata;
  import org.krysalis.version.resolve.VersionResolver;
+ import org.krysalis.version.util.note.AnnotationScratchpad;
  
  /**
***************
*** 82,86 ****
       * @see org.apache.commons.version.model.constraint.Constraint#resolve()
       */
!     public ConstraintConclusion check() throws VersionException {
          ConstraintConclusion conclusion =
              ConstraintConclusion.UNCERTAINLY_UNSATISFIED;
--- 83,87 ----
       * @see org.apache.commons.version.model.constraint.Constraint#resolve()
       */
!     public ConstraintConclusion check(AnnotationScratchpad pad) throws VersionException {
          ConstraintConclusion conclusion =
              ConstraintConclusion.UNCERTAINLY_UNSATISFIED;

Index: ConstraintSet.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/constraint/ConstraintSet.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ConstraintSet.java	17 Feb 2003 06:27:27 -0000	1.3
--- ConstraintSet.java	5 Mar 2003 19:57:29 -0000	1.4
***************
*** 56,69 ****
  package org.krysalis.version.constraint;
  
- import java.io.PrintStream;
- import java.io.PrintWriter;
- import java.util.ArrayList;
  import java.util.Collection;
! import java.util.Iterator;
  
  /**
   * @author [email protected]
   */
! public class ConstraintSet extends ArrayList {
  
      /**
--- 56,67 ----
  package org.krysalis.version.constraint;
  
  import java.util.Collection;
! 
! import org.krysalis.version.util.collection.EntityList;
  
  /**
   * @author [email protected]
   */
! public class ConstraintSet extends EntityList {
  
      /**
***************
*** 72,76 ****
       */
      public ConstraintSet(int initialCapacity) {
!         super(initialCapacity);
      }
  
--- 70,74 ----
       */
      public ConstraintSet(int initialCapacity) {
!         super("Constraint Set", initialCapacity);
      }
  
***************
*** 79,83 ****
       */
      public ConstraintSet() {
!         super();
      }
  
--- 77,81 ----
       */
      public ConstraintSet() {
!         super("Constraint Set");
      }
  
***************
*** 87,119 ****
       */
      public ConstraintSet(Collection c) {
!         super(c);
!     }
! 
!     public boolean hasEntries() {
!         return !isEmpty();
!     }
! 
!     public void dump(PrintStream out) {
!         dump(out, 0);
!     }
! 
!     public void dump(PrintStream out, int depth) {
!         dump(new PrintWriter(out, true), depth);
!     }
! 
!     public void dump(PrintWriter out) {
!         dump(out, 0);
!     }
! 
!     public void dump(PrintWriter out, int depth) {
!         out.println("Constraint Set");
!         if (hasEntries()) {
!             out.println("(");
!             for (Iterator i = iterator(); i.hasNext();) {
!                 Object entry = (Object) i.next();
!                 out.println("\t" + entry.toString());
!             }
!             out.println(")");
!         }
      }
  }
--- 85,89 ----
       */
      public ConstraintSet(Collection c) {
!         super("Constraint Set",c);
      }
  }

Index: VersionDataRangeConstraint.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/constraint/VersionDataRangeConstraint.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** VersionDataRangeConstraint.java	16 Feb 2003 00:08:11 -0000	1.6
--- VersionDataRangeConstraint.java	5 Mar 2003 19:57:29 -0000	1.7
***************
*** 63,66 ****
--- 63,67 ----
  import org.krysalis.version.resolve.VersionMetadata;
  import org.krysalis.version.resolve.VersionResolver;
+ import org.krysalis.version.util.note.AnnotationScratchpad;
  
  /**
***************
*** 82,86 ****
       * @see org.apache.commons.version.model.constraint.Constraint#resolve()
       */
!     public ConstraintConclusion check() throws VersionException {
          ConstraintConclusion conclusion =
              ConstraintConclusion.UNCERTAINLY_UNSATISFIED;
--- 83,87 ----
       * @see org.apache.commons.version.model.constraint.Constraint#resolve()
       */
!     public ConstraintConclusion check(AnnotationScratchpad pad) throws VersionException {
          ConstraintConclusion conclusion =
              ConstraintConclusion.UNCERTAINLY_UNSATISFIED;

Index: ConstraintEvaluator.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/constraint/ConstraintEvaluator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ConstraintEvaluator.java	17 Feb 2003 06:27:27 -0000	1.1
--- ConstraintEvaluator.java	5 Mar 2003 19:57:29 -0000	1.2
***************
*** 58,63 ****
  import java.util.Iterator;
  
! import org.krysalis.version.constraint.exception.ConstraintException;
  import org.krysalis.version.exception.VersionException;
  import org.krysalis.version.util.note.AnnotationScratchpad;
  
--- 58,66 ----
  import java.util.Iterator;
  
! import org.krysalis.version.constraint.collecting.ConstraintSetCollection;
! import org.krysalis.version.constraint.collecting.UberConstraintCollector;
! import org.krysalis.version.constraint.result.*;
  import org.krysalis.version.exception.VersionException;
+ import org.krysalis.version.util.debug.DebugUtils;
  import org.krysalis.version.util.note.AnnotationScratchpad;
  
***************
*** 70,75 ****
  public class ConstraintEvaluator {
  
-     private AnnotationScratchpad m_pad = null;
- 
      public ConstraintEvaluator() {
      }
--- 73,76 ----
***************
*** 78,109 ****
      //:TODO: Remove throws --- return all info..
  
!     public void evaluate(ConstraintSet constraints) throws ConstraintException {
          for (Iterator ii = constraints.iterator(); ii.hasNext();) {
              Constraint constraint = (Constraint) ii.next();
  
!             System.out.println("Constraint: " + constraint);
  
              try {
!                 ConstraintConclusion conclusion = constraint.check();
  
                  if (!ConstraintConclusion.isSatisfied(conclusion)) {
  
                      if (ConstraintConclusion.isCertain(conclusion))
!                         throw new ConstraintException(
                              "Constraint NOT satisfied: ",
!                             constraint);
                      else
!                         m_pad.addWarning(
!                             "Constraint *suspected* NOT satisfied: "
!                                 + constraint);
                  }
              }
              catch (VersionException e) {
!                 throw new ConstraintException(
!                     "Constraint failed",
                      constraint,
!                     e);
              }
          }
      }
  }
--- 79,146 ----
      //:TODO: Remove throws --- return all info..
  
!     public ConstraintResultSet evaluate(ConstraintSetCollection constraintSets) {
!         ConstraintResultSet uberResultSet = new ConstraintResultSet();
! 
!         for (Iterator i = constraintSets.iterator(); i.hasNext();) {
!             ConstraintSet set = (ConstraintSet) i.next();
! 
!             ConstraintResultSet resultSet = evaluate(set);
! 
!             uberResultSet.addResultSet(resultSet);
!         }
! 
!         return uberResultSet;
!     }
! 
!     public ConstraintResultSet evaluate(ConstraintSet constraints) {
! 
!         ConstraintResultSet resultSet = new ConstraintResultSet();
! 
          for (Iterator ii = constraints.iterator(); ii.hasNext();) {
              Constraint constraint = (Constraint) ii.next();
  
!             AnnotationScratchpad pad = new AnnotationScratchpad();
! 
!             ConstraintLogger.g_log.debug("Constraint: " + constraint);
  
              try {
!                 ConstraintConclusion conclusion = constraint.check(pad);
  
                  if (!ConstraintConclusion.isSatisfied(conclusion)) {
  
                      if (ConstraintConclusion.isCertain(conclusion))
!                         resultSet.addError(
                              "Constraint NOT satisfied: ",
!                             constraint,
!                             conclusion,
!                             pad);
                      else
!                         resultSet.addWarning(
!                             "Constraint *suspected* NOT satisfied: ",
!                             constraint,
!                             conclusion,
!                             pad);
                  }
              }
              catch (VersionException e) {
!                 resultSet.addError(
!                     "Constraint *error*: " + e.getMessage(),
                      constraint,
!                     ConstraintConclusion.UNSET,
!                     pad);
              }
          }
+ 
+         return resultSet;
+     }
+ 
+     public static void main(String args[]) throws Exception {
+         ConstraintEvaluator eval = new ConstraintEvaluator();
+         ConstraintSetCollection collection =
+             (new UberConstraintCollector()).collect();
+ 
+         ConstraintResultSet resultSet = eval.evaluate(collection);
+ 
+         DebugUtils.dump(resultSet);
      }
  }




-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.