package er.reporting;
import java.util.Enumeration;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.appserver.WOResponse;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSMutableArray;
import com.webobjects.foundation.NSNotificationCenter;
import er.grouping.DRMasterCriteria;
import er.grouping.DRReportModel;
import er.grouping.DRSubMasterCriteria;
public class WRReportEditor extends WOComponent implements DRMasterCriteriaEditing {
protected NSArray _masterCriteriaList;
protected NSArray _attributeList;
protected DRMasterCriteria _masterCriteria;
protected boolean _condition;
protected String masterCriteriaUpdateAction;
protected String attributeUpdateAction;
protected String showAttributeEditor;
public WRReportEditor(WOContext c){
super(c);
}
public boolean showAttributeEditorBoolean() {
if (showAttributeEditor == null) {
return true;
}
if (showAttributeEditor.equals("false")) {
return false;
}
return true;
}
public void resetGroups() {
NSNotificationCenter.defaultCenter().postNotification(DRReportModel.DRReportModelRebuildNotification, null, null);
}
public boolean condition() {
return _condition;
}
public void setCondition(boolean val) {
_condition = val;
}
@Override
public void reset() {
_masterCriteria = null;
_masterCriteriaList = null;
_attributeList = null;
}
@Override
public void awake() {
//[self reset];
super.awake();
}
@Override
public void appendToResponse(WOResponse r, WOContext c) {
//[self reset];
super.appendToResponse(r, c);
}
public DRMasterCriteria masterCriteria() {
return _masterCriteria;
}
public void setMasterCriteria(DRMasterCriteria v) {
_masterCriteria = v;
}
public NSArray attributeList() {
return _attributeList;
}
public void setAttributeList(NSArray v) {
_attributeList = v;
}
public NSArray masterCriteriaList() {
return _masterCriteriaList;
}
public void setMasterCriteriaList(NSArray v) {
_masterCriteriaList = v;
}
public NSArray newSubCriteriaListFromMC(DRMasterCriteria amc) {
NSMutableArray newSMCs = new NSMutableArray();
NSArray oldSMCs = amc.subCriteriaList();
Enumeration en = oldSMCs.objectEnumerator();
while (en.hasMoreElements()) {
DRSubMasterCriteria smc = (DRSubMasterCriteria)en.nextElement();
DRSubMasterCriteria newsmc = DRSubMasterCriteria.withKeyUseMethodUseTimeFormatFormatPossibleValuesUseTypeGroupEdgesPossibleValues(smc.key(), smc.useMethod(), smc.useTimeFormat(), smc.format(), smc.possibleValuesUseType(), smc.groupEdges(), smc.rawPossibleValues());
newSMCs.addObject(newsmc);
}
return newSMCs;
}
public Object regenReportGroup() {
NSArray oldMCs = new NSArray(masterCriteriaList());
Enumeration en = oldMCs.objectEnumerator();
while (en.hasMoreElements()) {
DRMasterCriteria amc = (DRMasterCriteria)en.nextElement();
NSArray smcList = newSubCriteriaListFromMC(amc);
replaceMCWith(amc, smcList);
}
if (masterCriteriaUpdateAction != null) {
return performParentAction(masterCriteriaUpdateAction);
}
return null;
}
public Object addMC() {
NSMutableArray arr = new NSMutableArray(masterCriteriaList());
NSMutableArray smcList = new NSMutableArray();
smcList.addObject(DRSubMasterCriteria.withKeyUseMethodUseTimeFormatFormatPossibleValuesUseTypeGroupEdgesPossibleValues("category", false, false, null, null, false, null));
arr.addObject(DRMasterCriteria.withSubMasterCriteriaUserInfo(smcList, null));
setMasterCriteriaList(arr);
//[self resetGroups]
return null;
}
public NSMutableArray newArraySans(NSArray arr1, Object member) {
NSMutableArray arr = new NSMutableArray();
Enumeration en = arr1.objectEnumerator();
while (en.hasMoreElements()) {
DRMasterCriteria att = (DRMasterCriteria)en.nextElement();
if (!att.equals(member)) {
arr.addObject(att);
}
}
return arr;
}
public Object deleteMC() {
NSMutableArray arr = newArraySans(masterCriteriaList(), masterCriteria());
setMasterCriteriaList(arr);
//[self resetGroups]
return null;
}
public void replaceMCWith(DRMasterCriteria oldMC, NSArray smcList) {
NSMutableArray arr = new NSMutableArray(masterCriteriaList());
int indx = arr.indexOfObject(oldMC);
arr.insertObjectAtIndex(DRMasterCriteria.withSubMasterCriteriaUserInfo(smcList, oldMC.userInfo()), indx);
arr.removeObject(oldMC);
setMasterCriteriaList(arr);
}
}