package org.compass.core.test.component.inheritance1; import org.compass.core.Compass; import org.compass.core.CompassHit; import org.compass.core.CompassHits; import org.compass.core.CompassSession; import org.compass.core.CompassTransaction; import org.compass.core.config.CompassConfiguration; import org.compass.core.config.CompassEnvironment; public class Moo { public static void main(String[] args) { new Moo().moo(); } private void moo() { FatherImpl father = new FatherImpl("Sir Ivan"); FavouriteSonImpl favouriteSon = new FavouriteSonImpl("Ivan Jr", father); father.setFavouriteSon(favouriteSon); DaughterImpl daughter = new DaughterImpl("Betty Jr", father); father.getChildren().add(daughter); Compass compass = (Compass) new CompassConfiguration() .setSetting(CompassEnvironment.CONNECTION, "target/test-index") .addResource("org/compass/core/test/component/inheritance1/Father.cpm.xml") .addResource("org/compass/core/test/component/inheritance1/Child.cpm.xml") .buildCompass(); CompassSession session = compass.openSession(); CompassTransaction transaction = null; try { transaction = session.beginTransaction(); session.save(father); session.save(favouriteSon); session.save(daughter); } finally { if (transaction != null) { transaction.commit(); } if (session != null) { session.close(); } } session = compass.openSession(); try { transaction = session.beginTransaction(); CompassHits hits = session.find("+alias:father betty"); for (int i = 0; i < hits.length(); i++) { CompassHit compassHit = hits.hit(i); Father data = (Father) compassHit.getData(); System.out.println("data = " + data.getClass()); System.out.println("data.getChildren().size() = " + data.getChildren().size()); } } finally { if (transaction != null) { transaction.commit(); } if (session != null) { session.close(); } } System.out.println("-----------------------------------"); session = compass.openSession(); try { transaction = session.beginTransaction(); CompassHits hits = session.find("+childalias:child iva"); for (int i = 0; i < hits.length(); i++) { CompassHit compassHit = hits.hit(i); Object data = compassHit.getData(); System.out.println("data = " + data.getClass()); } } finally { if (transaction != null) { transaction.commit(); } if (session != null) { session.close(); } } System.out.println("-----------------------------------"); session = compass.openSession(); try { transaction = session.beginTransaction(); String alias1 = "favouriteson"; String alias2 = "daughter"; String alias = buildAlias(new String[]{alias1, alias2}); CompassHits hits = session.find(alias + " jr"); for (int i = 0; i < hits.length(); i++) { CompassHit compassHit = hits.hit(i); Child data = (Child) compassHit.getData(); System.out.println("data = " + data.getClass()); System.out.println("data.getFather() = " + data.getFather()); } } finally { if (transaction != null) { transaction.commit(); } if (session != null) { session.close(); } } System.out.println("-----------------------------------"); session = compass.openSession(); try { transaction = session.beginTransaction(); String alias = buildAlias(new String[]{"father"}); CompassHits hits = session.find(alias + " sir"); for (int i = 0; i < hits.length(); i++) { CompassHit compassHit = hits.hit(i); Object data = compassHit.getData(); System.out.println("data = " + data.getClass()); } } finally { if (transaction != null) { transaction.commit(); } if (session != null) { session.close(); } } } private String buildAlias(String[] aliasList) { if (aliasList.length == 0) { return ""; } StringBuffer buf = new StringBuffer("+("); for (int i = 0; i < aliasList.length; i++) { buf.append("alias:").append(aliasList[i]).append(" "); } buf.append(")"); return buf.toString(); } }