/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.reportgen;
import cli_fmw.delegate.AuditListener;
import framework.beans.reportgen.ReportGeneratorBean;
import framework.beans.reportgen.ReportGeneratorBeanRemote;
import cli_fmw.delegate.DelegateSimple;
import cli_fmw.delegate.directory.complex.reportType.DirectoryReportTypeItem;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.MessageBox;
import framework.beans.reportgen.item.QueryDetails;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author petr
*/
public class QuerySearcher extends DelegateSimple<ReportGeneratorBeanRemote> {
public QuerySearcher(AuditListener al) throws ClipsException {
super(ReportGeneratorBean.class.getSimpleName());
initBean();
this.am = al;
}
/**
* Возвращает список генерируемых отчетов. Один из параметров предполагается равным null
* @param type - тип группы отчетов (выборка происходит отчетов только этой группы)
* @param bool - вид отчета (основной или вспомогат)
* @return
* @throws ClipsException/
*/
public ArrayList<QueryLocal> getQueryList(DirectoryReportTypeItem type, Boolean bool) throws ClipsException{
int errorCount = 0;
try {
ArrayList<QueryLocal> res = new ArrayList<QueryLocal>();
List<QueryDetails> queryList = getBean().get().getQueryList(type != null ? type.getID() : 0, bool);
String msg = "";
for (QueryDetails qd : queryList) {
try {
res.add(new QueryLocal(qd, false, am));
} catch (Exception ex) {
QueryDetails details = new QueryDetails();
details.id = qd.id;
details.title = qd.title;
details.description = qd.description;
res.add(new QueryLocal(details, true, am));
ex.printStackTrace();
msg += ex.getLocalizedMessage() + "\n";
errorCount++;
}
}
if(errorCount > 0) {
String str = (type == null ? "Всего отчетов" : "Отчетов в группе");
MessageBox.showExceptionOnly(
new Exception(str + ", признанных некорректными и не загруженных: " + errorCount
+ "\n\n" + msg));
}
return res;
} catch (Exception ex) {
clearBean();
throw new ClipsException("Ошибка при получении запросов", ex);
}
}
}