Update of /cvsroot/woc/woc/src/woc/wocjava/source/com/egonw/woc/predicate In directory usw-pr-cvs1:/tmp/cvs-serv23171/woc/wocjava/source/com/egonw/woc/predicate Added Files: HasBrutoFormule.java HasEnglishWord.java HasField.java HasGermanWord.java HasItem.java HasURL.java IsAfkorting.java IsChemical.java IsCode.java IsGroup.java IsName.java IsSource.java LessBrutoFormule.java LessCasNumber.java LessEnglishWord.java LessFWord.java LessGermanWord.java LessWocWord.java SortsAsLetter.java StartsWith.java Log Message: --- NEW FILE: HasBrutoFormule.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class HasBrutoFormule implements UnaryPredicate { public boolean execute( Object object ) { return ((Item)object).contains(Item.BRUTO); } } --- NEW FILE: HasEnglishWord.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class HasEnglishWord implements UnaryPredicate { public boolean execute( Object object ) { return ((Item)object).contains(Item.ENGLISH); } } --- NEW FILE: HasField.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class HasField implements BinaryPredicate { public boolean execute( Object first, Object second ) { if (!(first instanceof Item) || !(second instanceof Integer)) { return false; } else { return ((Item)first).contains( ((Integer)second).intValue() ); } } } --- NEW FILE: HasGermanWord.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class HasGermanWord implements UnaryPredicate { public boolean execute( Object object ) { return ((Item)object).contains(XItem.XGERMAN); } } --- NEW FILE: HasItem.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; /** * HasItem is a binary predicate that * returns true if the first operand (an Item) has * the name of the second operand */ public final class HasItem implements BinaryPredicate { /** * Return true if the first operand is greater than the second operand. * @param first The first operand. necessary. * @param second The second operand. necessary. * @return first.get(Item.NAME).equals(second) */ public boolean execute( Object first, Object second ) { boolean result = false; if (first instanceof Item && second instanceof String) result = ((String)((Item)first).get(Item.NAME)).equals(second); return result; } } --- NEW FILE: HasURL.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class HasURL implements UnaryPredicate { public boolean execute( Object object ) { return ((Item)object).contains(Item.URL); } } --- NEW FILE: IsAfkorting.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class IsAfkorting implements UnaryPredicate { public boolean execute( Object object ) { boolean result = false; if (((Item)object).contains(XItem.XTYPE)) { XTYPE xt = (XTYPE)((Item)object).get(XItem.XTYPE); result = xt.isType(XTYPE.ABBREV); }; return result; } } --- NEW FILE: IsChemical.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class IsChemical implements UnaryPredicate { public boolean execute( Object object ) { boolean result = false; if (((Item)object).contains(XItem.XTYPE)) { XTYPE xt = (XTYPE)((Item)object).get(XItem.XTYPE); result = (((Item)object).contains(Item.CHEMICAL) || ((Item)object).contains(Item.CASNR) || xt.isType(XTYPE.CHEMICAL) || xt.isType(XTYPE.POLYMER) || xt.isType(XTYPE.MIXTURE)); } else { result = (((Item)object).contains(Item.CHEMICAL) || ((Item)object).contains(Item.CASNR)); } return result; } } --- NEW FILE: IsCode.java --- package com.egonw.woc.predicate; import java.util.Vector; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class IsCode implements BinaryPredicate { public boolean execute( Object first, Object second ) { return ((String)((Item)first).get(XItem.XCODE)).toLowerCase().equals(((String)second).toLowerCase()); } } --- NEW FILE: IsGroup.java --- package com.egonw.woc.predicate; import java.util.Vector; import com.objectspace.jgl.*; import com.egonw.woc.*; /** * Checks wether this Item belongs to a group. */ public final class IsGroup implements BinaryPredicate { /** * Return true if the Group field of * the item first contains the value of the second operand. * @param first The first operand. Must be off class Item. * @param second The second operand. Must be a string. * @return */ public boolean execute( Object first, Object second ) { if (((Item)first).contains(Item.GROUP)) { return ((Vector)((Item)first).get(Item.GROUP)).contains(second); } else { return false; } } } --- NEW FILE: IsName.java --- package com.egonw.woc.predicate; import java.util.Vector; import com.objectspace.jgl.*; import com.egonw.woc.*; /** * Checks wether this Item belongs to a group. */ public final class IsName implements BinaryPredicate { /** * Return true if the Name field of * the item first contains the value of the second operand. * @param first The item to be checked. * @param second The name that the item should have. * @return */ public boolean execute( Object first, Object second ) { return ((String)((Item)first).get(Item.NAME)).toLowerCase().equals(((String)second).toLowerCase()); } } --- NEW FILE: IsSource.java --- package com.egonw.woc.predicate; import java.util.*; import com.objectspace.jgl.*; import com.egonw.woc.*; /** * Checks wether this Item belongs to a group. */ public final class IsSource implements BinaryPredicate { /** */ public boolean execute( Object first, Object second ) { boolean result = false; result = ((String)((Item)first).get(Item.NAME)).toLowerCase().equals(second); //if (((Item)first).contains(Item.VERVOEGINGEN)) { // Enumeration vvn = ((Vector)((Item)first).get(Item.VERVOEGINGEN)).elements(); // while (vvn.hasMoreElements()) // result = (result || ((String)vvn.nextElement()).toLowerCase().equals(second)); //} return result; } } --- NEW FILE: LessBrutoFormule.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class LessBrutoFormule implements BinaryPredicate { private String pakSymbool(String s) { StringBuffer sb = new StringBuffer(); if (s.length() >= 2) { char c = s.charAt(0); if (Character.isLetter(c) && Character.isUpperCase(c)) { sb.append(c); c = s.charAt(1); if (Character.isLetter(c) && Character.isLowerCase(c)) sb.append(c); } } else if (s.length() >= 1) { char c= s.charAt(0); if (Character.isLetter(c) && Character.isUpperCase(c)) { sb.append(c); } } return sb.toString(); } private String pakAantal(String s) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (Character.isDigit(c)) { sb.append(c); } else { i = s.length(); } } return sb.toString(); } private String stripSymbool(String s) { int start = 0; if (s.length() >= 2) { char c = s.charAt(0); if (Character.isLetter(c) && Character.isUpperCase(c)) { start = 1; c = s.charAt(1); if (Character.isLetter(c) && Character.isLowerCase(c)) start = 2; } } else if (s.length() >= 1) { char c= s.charAt(0); if (Character.isLetter(c) && Character.isUpperCase(c)) { start = 1; } } String result = ""; if (s.length() > start) result = new String(s.substring(start)); return result; } private String stripAantal(String s) { while ((s.length() > 0) && (Character.isDigit(s.charAt(0)))) { if (s.length() > 1) { s = new String(s.substring(1)); } else { s = new String(); }; } return s; } public boolean execute( Object first, Object second ) { boolean result = false; if ( !((Item)first).contains(Item.BRUTO) ) { result = true; } else if ( !((Item)second).contains(Item.BRUTO) ) { result = false; } else { String eerste = ((Bruto)((Item)first).get(Item.BRUTO)).toString(); String tweede = ((Bruto)((Item)second).get(Item.BRUTO)).toString(); String tekenE = new String(); String tekenT = new String(); String digitE = new String(); String digitT = new String(); boolean succes = false; while (!succes) { tekenE = new String(pakSymbool(eerste)); tekenT = new String(pakSymbool(tweede)); eerste = new String(stripSymbool(eerste)); tweede = new String(stripSymbool(tweede)); digitE = new String(pakAantal(eerste)); digitT = new String(pakAantal(tweede)); eerste = new String(stripAantal(eerste)); tweede = new String(stripAantal(tweede)); if (tekenE.equals(tekenT)) { if (digitE.equals(digitT)) { if (tekenE.length() == 0) succes = true; } else { if (digitE.length() == digitT.length()) { result = (digitE.compareTo(digitT) < 0); } else { result = (digitE.length() < digitT.length()); } succes = true; } } else { succes = true; result = (tekenE.compareTo(tekenT) < 0); } } } return result; } } --- NEW FILE: LessCasNumber.java --- package com.egonw.woc.predicate; import java.util.*; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class LessCasNumber implements BinaryPredicate { public boolean execute( Object first, Object second ) { boolean result = false; if (((Item)first).contains(Item.CASNR)) { if (((Item)second).contains(Item.CASNR)) { // assume altijd drie tokens StringTokenizer st1 = new StringTokenizer((String)((Item)first).get(Item.CASNR), "-"); StringTokenizer st2 = new StringTokenizer((String)((Item)second).get(Item.CASNR), "-"); int i = Integer.parseInt(st1.nextToken()); int j = Integer.parseInt(st2.nextToken()); if ( i == j ) { if ( Integer.parseInt(st1.nextToken()) <= Integer.parseInt(st2.nextToken()) ) { result = true; } else { result = false; } } else if ( i < j ) { result = true; } else { result = false; } } else { result = false; } } else { result = true; } return result; } } --- NEW FILE: LessEnglishWord.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class LessEnglishWord implements BinaryPredicate { public boolean execute( Object first, Object second ) { try { return ( strip((String)((Item)first).get(Item.ENGLISH))).compareTo( strip((String)((Item)second).get(Item.ENGLISH))) < 0; } catch (NullPointerException e) { if (((Item)first).contains(Item.ENGLISH)) { return false; } else { return true; } } } private String strip(String s) { StringBuffer sb = new StringBuffer(); int i = 0; while ((i <= s.length() -1) && (!Character.isLetter(s.charAt(i)))) i++; while (i <= s.length() -1) { sb.append(s.charAt(i)); i++; } return sb.toString(); } } --- NEW FILE: LessFWord.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class LessFWord implements BinaryPredicate { public boolean execute( Object first, Object second ) { try { return strip(((FWord)first).getFWord()).compareTo( strip(((FWord)second).getFWord())) < 0; } catch (NullPointerException e) { return false; } } private String strip(String s) { StringBuffer sb = new StringBuffer(); int i = 0; while ((i <= s.length() -1) && (!Character.isLetter(s.charAt(i)))) i++; while (i <= s.length() -1) { sb.append(s.charAt(i)); i++; } return sb.toString(); } } --- NEW FILE: LessGermanWord.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; public final class LessGermanWord implements BinaryPredicate { public boolean execute( Object first, Object second ) { try { return ( strip((String)((Item)first).get(XItem.XGERMAN))).compareTo( strip((String)((Item)second).get(XItem.XGERMAN))) < 0; } catch (NullPointerException e) { if (((Item)first).contains(XItem.XGERMAN)) { return false; } else { return true; } } } private String strip(String s) { StringBuffer sb = new StringBuffer(); int i = 0; while ((i <= s.length() -1) && (!Character.isLetter(s.charAt(i)))) i++; while (i <= s.length() -1) { sb.append(s.charAt(i)); i++; } return sb.toString(); } } --- NEW FILE: LessWocWord.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; /** * Sorts items by strings. * * @author Egon Willighagen * @version 1.1, 2/7/98 * * 2/7/98: placed in com.egonw.woc * 24/2/98: Now skips the first non-characters for sorting * */ public final class LessWocWord implements BinaryPredicate { public boolean execute( Object first, Object second ) { return strip(first.toString().toLowerCase()).compareTo( strip(second.toString().toLowerCase()) ) < 0; } private String strip(String s) { StringBuffer sb = new StringBuffer(); int i = 0; while ((i <= s.length() -1) && (!Character.isLetter(s.charAt(i)))) i++; while (i <= s.length() -1) { sb.append(s.charAt(i)); i++; } return sb.toString(); } } --- NEW FILE: SortsAsLetter.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; import com.egonw.woc.util.*; /** * StartsWith is a binary predicate that * returns true if the first operand as a string * starts with the second operand as a string. */ public final class SortsAsLetter implements BinaryPredicate { /** * Return true if the first operand is greater than the second operand. * @param first The first operand. necessary. * @param second The second operand. necessary. * @return first.toString().startsWith( second.toString() */ public boolean execute( Object first, Object second ) { return Convert.stripTillFirstLetter(first.toString()).startsWith( second.toString() ); } } --- NEW FILE: StartsWith.java --- package com.egonw.woc.predicate; import com.objectspace.jgl.*; import com.egonw.woc.*; /** * StartsWith is a binary predicate that * returns true if the first operand as a string * starts with the second operand as a string. */ public final class StartsWith implements BinaryPredicate { /** * Return true if the first operand is greater than the second operand. * @param first The first operand. necessary. * @param second The second operand. necessary. * @return first.toString().startsWith( second.toString() */ public boolean execute( Object first, Object second ) { return first.toString().startsWith( second.toString() ); } } |