package org.raidenjpa.query.parser; import java.util.ArrayList; import java.util.List; import org.raidenjpa.util.BadSmell; public class SelectClause { List<SelectElement> elements = new ArrayList<SelectElement>(); private boolean distinct; @BadSmell("Maybe words.require") public void parse(QueryWords words) { if (!"SELECT".equalsIgnoreCase(words.current())) { return; } words.next(); if ("DISTINCT".equalsIgnoreCase(words.current())) { distinct = true; words.next(); } do { if (words.current().equals(",")) { words.next(); } elements.add(new SelectElement(words.next())); } while(words.hasMoreSelectItem()); } public void addElement(String word) { elements.add(new SelectElement(word)); } public List<SelectElement> getElements() { return elements; } @Override public String toString() { return "SelectClause [elements=" + elements + "]"; } public boolean isDistinct() { return distinct; } public boolean isThereAggregationFunction() { for (SelectElement element : getElements()) { if (element.isAggregationFunction()) { return true; } } return false; } }