package er.reporting.examples;
import org.apache.log4j.Logger;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.appserver.WODisplayGroup;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSBundle;
import com.webobjects.foundation.NSDictionary;
import com.webobjects.foundation.NSMutableArray;
import com.webobjects.foundation.NSTimestamp;
import com.webobjects.foundation._NSStringUtilities;
import er.grouping.DRAttribute;
import er.grouping.DRAttributeGroup;
import er.grouping.DRMasterCriteria;
import er.grouping.DRReportModel;
import er.grouping.DRSubMasterCriteria;
// Generated by the WebObjects Wizard Sat Oct 31 10:12:01 US/Central 1998
public class Main extends WOComponent {
private Logger log = Logger.getLogger(Main.class);
public WODisplayGroup movieDisplayGroup;
public NSArray attribArray;
public NSArray critArray;
// Generated by the WebObjects Wizard Sat Oct 31 10:12:01 US/Central 1998
public Main(WOContext c) {
super(c);
String path = NSBundle.mainBundle().pathForResource("TestReportModel", "dat");
String string = _NSStringUtilities.stringFromFile(path);
if(string != null) {
NSDictionary m = DRReportModel.modelDictWithPListString(string);
critArray = (NSArray)m.objectForKey("GroupDef");
attribArray = (NSArray)m.objectForKey("AttributeDef");
log.debug( "critArray:"+critArray);
log.debug( "attribArray:"+attribArray);
}
//creatingModelsProgrammatically();
Session s = (Session)session();
s.critArray = critArray;
s.attribArray = attribArray;
}
public WOComponent reload() {
((Session)this.session()).model().setAttributeList(attribArray);
((Session)this.session()).model().setCriteriaList(critArray);
return this;
}
public WOComponent rebuild() {
//RefreshPage0 pg = (RefreshPage0) this.pageWithName("RefreshPage0");
//pg.critArray = critArray;
//pg.attribArray = attribArray;
//pg.records = movieDisplayGroup.allObjects();
Session s = (Session)session();
s.setObjectForKey(this, "Main");
DRReportModel model = DRReportModel.withRawRecordsCriteriaListAttributeList(movieDisplayGroup.allObjects(), s.critArray, s.attribArray);
s.setModel(model);
//model.addToZList((DRGroup)model.vList().lastObject());
WOComponent resultPage = (WOComponent)this.pageWithName("Report");
return resultPage;
//return pg;
}
public void creatingModelsProgrammatically() {
DRAttribute attGrp;
NSMutableArray subAttList = new NSMutableArray();
NSMutableArray smcList = new NSMutableArray();
NSMutableArray smcList2 = new NSMutableArray();
NSMutableArray smcList3 = new NSMutableArray();
NSMutableArray critArray2 = new NSMutableArray();
NSMutableArray attribArray2 = new NSMutableArray();
attribArray2.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("revenue", null, "Revenue", true, null));
attribArray2.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("title", null, "Title", false, null));
attribArray2.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("dateReleased", null, "Date Released", false, null));
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("studio.name", null, "Studio Name1", false, null));
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("revenue", null, "Revenue2", true, null));
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("revenue", null, "Revenue3", true, null));
attGrp = DRAttributeGroup.withKeyPathFormatLabelTotalListUserInfo("AGroupofAttributes", null, "A Group of Attributes", true, subAttList, null);
attribArray2.addObject(attGrp);
subAttList = new NSMutableArray();
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("studio.name", null, "Studio Name2", false, null));
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("title", null, "Revenue3", false, null));
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("revenue", null, "Revenue4", true, null));
attGrp = DRAttributeGroup.withKeyPathFormatLabelTotalListUserInfo("AnInnerGroup", null, "An Inner Group", true, subAttList, null);
subAttList = new NSMutableArray();
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("studio.name", null, "Studio Name3", false, null));
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("revenue", null, "Revenue2", true, null));
subAttList.addObject(DRAttribute.withKeyPathFormatLabelTotalUserInfo("revenue", null, "Revenue3", true, null));
subAttList.addObject(attGrp);
attGrp = DRAttributeGroup.withKeyPathFormatLabelTotalListUserInfo("AnotherGroup", null, "Another Group", true, subAttList, null);
attribArray2.addObject(attGrp);
smcList2.addObject(DRSubMasterCriteria.withKeyUseMethodUseTimeFormatFormatPossibleValuesUseTypeGroupEdgesPossibleValues("dateReleased", false, false, null, "useRange", true, new NSArray(new Object[]{new NSTimestamp().timestampByAddingGregorianUnits(-25, 0, 0, 0, 0, 0) , new NSTimestamp().timestampByAddingGregorianUnits(-11, 0, 0, 0, 0, 0)})));
smcList.addObject(DRSubMasterCriteria.withKeyUseMethodUseTimeFormatFormatPossibleValuesUseTypeGroupEdgesPossibleValues("category", false, false, null, "usePredefined", false, new NSArray(new Object[]{"Action" , "Drama" , "Cult"})));
smcList3.addObject(DRSubMasterCriteria.withKeyUseMethodUseTimeFormatFormatPossibleValuesUseTypeGroupEdgesPossibleValues("revenue", false, false, null, "useRange", true, new NSArray(new Object[]{(Double.valueOf(500.0)) , (Double.valueOf(500000.0)) , (Double.valueOf(10000000.0)) , (Double.valueOf(14400000.0))})));
critArray2.addObject(DRMasterCriteria.withSubMasterCriteriaUserInfo(smcList, null));
critArray2.addObject(DRMasterCriteria.withSubMasterCriteriaUserInfo(smcList2, null));
critArray2.addObject(DRMasterCriteria.withSubMasterCriteriaUserInfo(smcList3, null));
//String s = DRReportModel.pListStringAttributeListMasterCriteriaList(attribArray, critArray);
//try{
// OWFileUtilities.writeStringToPath(s, "/tmp/testmodel.plist");
//}catch(java.io.IOException e){
//
//}
//log.debug( "");
//log.debug( "");
//log.debug( "As String:"+s);
critArray = critArray2;
attribArray = attribArray2;
log.debug( "critArray:"+critArray);
log.debug( "attribArray:"+attribArray);
}
}