1 21 package com.db4o.test; 22 23 import java.util.*; 24 25 import com.db4o.*; 26 import com.db4o.query.*; 27 28 public class SelectDistinct { 29 30 public String name; 31 32 public SelectDistinct() { 33 } 34 35 public SelectDistinct(String name) { 36 this.name = name; 37 } 38 39 public void store() { 40 Test.store(new SelectDistinct("a")); 41 Test.store(new SelectDistinct("a")); 42 Test.store(new SelectDistinct("a")); 43 Test.store(new SelectDistinct("b")); 44 Test.store(new SelectDistinct("b")); 45 Test.store(new SelectDistinct("c")); 46 Test.store(new SelectDistinct("c")); 47 Test.store(new SelectDistinct("d")); 48 Test.store(new SelectDistinct("e")); 49 } 50 51 public void test() { 52 53 String [] expected = new String [] { "a", "b", "c", "d", "e"}; 54 55 Query q = Test.query(); 56 q.constrain(SelectDistinct.class); 57 q.constrain(new Evaluation() { 58 59 private Hashtable ht = new Hashtable(); 60 61 public void evaluate(Candidate candidate) { 62 SelectDistinct sd = (SelectDistinct) candidate.getObject(); 63 boolean isDistinct = ht.get(sd.name) == null; 64 candidate.include(isDistinct); 65 if (isDistinct) { 66 ht.put(sd.name, new Object ()); 67 } 68 69 } 70 }); 71 72 ObjectSet objectSet = q.execute(); 73 while (objectSet.hasNext()) { 74 SelectDistinct sd = (SelectDistinct) objectSet.next(); 75 boolean found = false; 76 for (int i = 0; i < expected.length; i++) { 77 if (sd.name.equals(expected[i])) { 78 expected[i] = null; 79 found = true; 80 break; 81 } 82 } 83 Test.ensure(found); 84 } 85 86 for (int i = 0; i < expected.length; i++) { 87 Test.ensure(expected[i] == null); 88 } 89 } 90 } | Popular Tags |