package smartbi.freequery.metadata;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import smartbi.catalogtree.CatalogElement;
import smartbi.catalogtree.CatalogTreeModule;
import smartbi.freequery.metadata.IJavaQueryData.ICatalogFieldSupport;
import smartbi.freequery.querydata.CellData;
import smartbi.freequery.querydata.GridData;
import smartbi.freequery.repository.BasicField;
import smartbi.freequery.repository.FreeQueryDAOFactory;
import smartbi.freequery.repository.IField;
import smartbi.util.CatalogElementType;
import smartbi.util.StringUtil;
public class TestJavaQueryData implements IJavaQueryData, ICatalogFieldSupport {
private List<? extends IField> selectedFields = null;
private static final String ID_PREFIX = "JQID_";
@Override
public List<JavaQueryCatalogElement> getCatalogElements(String parentId) {
List<JavaQueryCatalogElement> result = new ArrayList<JavaQueryCatalogElement>();
if (StringUtil.isNullOrEmpty(parentId)) {
parentId = "DS.SYSTEM知识库";
}
parentId = parentId.replaceFirst(ID_PREFIX, "");
List<CatalogElement> elems = CatalogTreeModule.getInstance()
.getChildElements(parentId);
if (elems != null) {
for (CatalogElement elem : elems) {
String type = elem.getType();
if (!CatalogElementType.SCHEMA.name().equals(type)
&& !CatalogElementType.BASETABLE.name().equals(type)) {
continue;
}
result.add(new JavaQueryCatalogElement(
ID_PREFIX + elem.getId(), elem.getName(), elem
.getAlias(), elem.getDesc()));
}
}
return result;
}
@Override
public List<JavaQueryOutputField> getOutputFields(String catalogId) {
List<JavaQueryOutputField> result = new ArrayList<JavaQueryOutputField>();
if (StringUtil.isNullOrEmpty(catalogId)) {
return result;
}
catalogId = catalogId.replaceFirst(ID_PREFIX, "");
CatalogElement parentElem = CatalogTreeModule.getInstance()
.getCatalogElementById(catalogId);
String parentName = parentElem == null ? "" : parentElem.getName();
List<CatalogElement> elems = CatalogTreeModule.getInstance()
.getChildElements(catalogId);
if (elems != null) {
for (CatalogElement elem : elems) {
String type = elem.getType();
if (!CatalogElementType.FIELD.name().equals(type)) {
continue;
}
BasicField f = FreeQueryDAOFactory.getBasicFieldDAO().load(
elem.getId());
if (f == null) {
continue;
}
result.add(new JavaQueryOutputField(ID_PREFIX + f.getId(),
parentName + "_" + f.getName(), f.getAlias(), f
.getDesc(), f.getDataType(), f.getDataFormat()));
}
}
return result;
}
@Override
public void loadConfigs(String configs) {
//
}
@Override
public String saveConfigs() {
return null;
}
@Override
public List<JavaQueryConfig> getConfigs() {
return new ArrayList<JavaQueryConfig>();
}
@Override
public void setConfigValue(String key, String value) {
//
}
@Override
public void setConfigValues(Map<String, String> configValues) {
//
}
@Override
public void init() {
//
}
@Override
public List<JavaQueryParameter> getParameters() {
return new ArrayList<JavaQueryParameter>();
}
@Override
public List<JavaQueryOutputField> getOutputFields() {
List<JavaQueryOutputField> result = new ArrayList<JavaQueryOutputField>();
// getOutputFields(null, result);
return result;
}
protected void getOutputFields(String parentId,
List<JavaQueryOutputField> result) {
result.addAll(getOutputFields(parentId));
List<JavaQueryCatalogElement> elems = getCatalogElements(parentId);
for (JavaQueryCatalogElement elem : elems) {
getOutputFields(elem.getId(), result);
}
}
@Override
public void setParameterValue(String id, String value, String displayValue) {
//
}
@Override
public int getRowCount() {
return Integer.MAX_VALUE;
}
@Override
public GridData getGridData(int from, int count) {
GridData gridData = new GridData();
List<? extends IField> outfields = getSelectedFields();
List<String> stringHeaders = new ArrayList<String>();
for (int i = 0; i < outfields.size(); i++) {
stringHeaders.add(outfields.get(i).getName());
}
gridData.setStringHeaders(stringHeaders);
List<List<CellData>> cells = new ArrayList<List<CellData>>();
int totalRows = 25;
int to = Math.min(from + count, totalRows);
for (int i = from; i < to; i++) {
List<CellData> row = new ArrayList<CellData>();
for (int j = 0; j < outfields.size(); j++) {
CellData cell = new CellData();
cell.setIntValue(j + 1);
cell.setStringValue("" + (j + 1));
row.add(cell);
}
cells.add(row);
}
gridData.setData(cells);
gridData.setTotalRowsCount(totalRows);
return gridData;
}
@Override
public void close() {
//
}
@Override
public List<? extends IField> getSelectedFields() {
return selectedFields == null ? new ArrayList<IField>()
: selectedFields;
}
@Override
public void setSelectedFields(List<? extends IField> feilds) {
selectedFields = feilds;
}
}