package adql; import java.util.Iterator; import adql.query.ADQLObject; import adql.query.ADQLOrder; import adql.query.ADQLQuery; import adql.query.ClauseADQL; import adql.query.ClauseConstraints; import adql.query.ClauseSelect; import adql.query.SelectItem; import adql.query.constraint.Comparison; import adql.query.constraint.ComparisonOperator; import adql.query.constraint.ConstraintsGroup; import adql.query.from.ADQLTable; import adql.query.operand.ADQLColumn; import adql.query.operand.Concatenation; import adql.query.operand.NumericConstant; import adql.query.operand.Operation; import adql.query.operand.OperationType; import adql.query.operand.StringConstant; import adql.query.operand.WrappedOperand; import adql.search.ISearchHandler; import adql.search.SearchColumnHandler; public class TestADQLQuery { public static final void main(String[] args) throws Exception{ ADQLQuery query = new ADQLQuery(); // SELECT: ClauseSelect select = query.getSelect(); Concatenation concatObj = new Concatenation(); concatObj.add(new ADQLColumn("O", "nameObj")); concatObj.add(new StringConstant(" (")); concatObj.add(new ADQLColumn("O", "typeObj")); concatObj.add(new StringConstant(")")); select.add(new SelectItem(new WrappedOperand(concatObj), "Nom objet")); select.add(new ADQLColumn("O", "ra")); select.add(new ADQLColumn("O", "dec")); // FROM: ADQLTable table = new ADQLTable("truc.ObsCore"); table.setAlias("O"); // table.setJoin(new ADQLJoin(JoinType.INNER, new ADQLTable("VO"))); query.setFrom(table); // WHERE: ClauseConstraints where = query.getWhere(); where.add(new Comparison(new Operation(new ADQLColumn("ra"), OperationType.DIV, new ADQLColumn("dec")), ComparisonOperator.GREATER_THAN, new NumericConstant("1"))); ConstraintsGroup constOr = new ConstraintsGroup(); constOr.add(new Comparison(new ADQLColumn("typeObj"), ComparisonOperator.EQUAL, new StringConstant("Star"))); constOr.add("OR", new Comparison(new ADQLColumn("typeObj"), ComparisonOperator.LIKE, new StringConstant("Galaxy*"))); where.add("AND", constOr); // ORDER BY: ClauseADQL<ADQLOrder> orderBy = query.getOrderBy(); orderBy.add(new ADQLOrder(1, true)); System.out.println("*** QUERY ***\n" + query.toADQL()); ISearchHandler sHandler = new SearchColumnHandler(false); Iterator<ADQLObject> results = query.search(sHandler); // IReplaceHandler sHandler = new SimpleReplaceHandler(false, false) { // // @Override // protected boolean match(ADQLObject obj) { // return (obj instanceof ADQLColumn) && (((ADQLColumn)obj).getColumnName().equalsIgnoreCase("typeObj")); // } // // @Override // public ADQLObject getReplacer(ADQLObject objToReplace) throws UnsupportedOperationException { // return new ADQLColumn("NewTypeObj"); // } // // }; // sHandler.searchAndReplace(query); // System.out.println("INFO: "+sHandler.getNbReplacement()+"/"+sHandler.getNbMatch()+" replaced objects !"); // Iterator<ADQLObject> results = sHandler.iterator(); System.out.println("\n*** SEARCH ALL COLUMNS ***"); while(results.hasNext()) System.out.println("\t- " + results.next().toADQL()); System.out.println("\n*** QUERY ***\n" + query.toADQL()); } }