BrightSide Workbench Full Report + Source Code
NonBalancedStatementSet.java
Go to the documentation of this file.
1 /*
2  * TurrĂ³ i Cutiller Foundation. License notice.
3  * Copyright (C) 2011 Lluis TurrĂ³ Cutiller <http://www.turro.org/>
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU Affero General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Affero General Public License for more details.
14  *
15  * You should have received a copy of the GNU Affero General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 package org.turro.financials.register;
19 
20 import java.util.List;
21 import org.turro.financials.entity.RegisterEntry;
22 import org.turro.jpa.Dao;
23 import org.turro.util.PhraseBuilder;
24 
30 
31  @Override
32  public List<RegisterEntry> getEntries(Dao dao) {
33  List l = dao.getResultList(
34  "select register.id from RegisterEntry " +
35  "group by register.id having round(sum(debit)*100,0) <> round(sum(credit)*100,0)"
36  );
37  return (List<RegisterEntry>) dao.getResultList(
38  "select distinct entry " +
39  "from RegisterEntry as entry " +
40  "join entry.register register " +
41  "where register.id in " +
42  getInValue(l));
43  }
44 
45  private String getInValue(List l) {
46  PhraseBuilder pb = new PhraseBuilder();
47  pb.addWord("(");
48  for(Object o : l) {
49  Long id = (Long) o;
50  pb.addWord(id + "");
51  pb.addPendingSeparator(",");
52  }
53  pb.cancelSeparator();
54  pb.addWord(")");
55  if(pb.toString().equals("()")) {
56  return "(0)";
57  }
58  return pb.toString();
59  }
60 
61 }