tableConfig.setSortingEnabled(false);
tableConfig.setColumnMovingOffered(false);
hcTranslator = new HeaderColumnTranslator(trans);
sepValTableCtr = new TableController(tableConfig, ureq, getWindowControl(), hcTranslator, this);
for(int i = 0;i < numOfValuesPerLine+1; i++){ // lenght+1 since adding the delimiter above
sepValTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("ccc"+(i+1), i, null, ureq.getLocale()));
// add every name of a column to a list deployed as pulldown to the user for matching column with olat key
columnNames.add(trans.translate("column", new String[]{""+(i+1)}));
}
sepValModel = new GenericObjectArrayTableDataModel(rows, numOfLines);
sepValTableCtr.setTableDataModel(sepValModel);
keywithcolVC.put("sepValTable", sepValTableCtr.getInitialComponent());
PackageTranslator userTrans = new PackageTranslator("org.olat.user", ureq.getLocale());
PackageTranslator properyHandlersTrans = new PackageTranslator("org.olat.user.propertyhandlers", ureq.getLocale());
olatKeys = new ArrayList();
// adding order is relevant for the "if-else if"-statement below at events from step 3
olatKeys.add(properyHandlersTrans.translate("form.name.institutionalUserIdentifier"));
olatKeys.add(userTrans.translate("form.username"));
olatKeys.add(userTrans.translate("form.email"));
// add olatKeys and columnsNames to the form which displays it as pulldown menus
kwcForm = new KeyWithColumnForm("keywithcolform", trans, olatKeys, columnNames);
kwcForm.addListener(this);
keywithcolVC.put("kwcForm", kwcForm);
wc.setWizardTitle(trans.translate("wizard.step2.title"));
wc.setNextWizardStep(trans.translate("wizard.step2.howto"), keywithcolVC);
}
// events from step 2
// preparing step 3
}else if (source == kwcForm){
if (event == Form.EVNT_VALIDATION_OK) { // user clicked 'next'-button !!!!!!!
selectedColForOlatKey = Integer.parseInt(kwcForm.getSelectedColumn());
selectedOlatKey = Integer.parseInt(kwcForm.getSelectedOlatKey());
selectedValueOfOlatKey = (String) olatKeys.get(selectedOlatKey);
colwithbulkactionVC = new VelocityContainer("colwithbulkaction", VELOCITY_ROOT + "/colwithbulkaction.html", trans, this);
backLinkCol = LinkFactory.createLinkBack(colwithbulkactionVC, this);
sepValTableCtr = new TableController(tableConfig, ureq, getWindowControl(), hcTranslator, this);
columnNames = null;
columnNames = new ArrayList();
for(int i = 0;i < numOfValuesPerLine+1; i++){ // lenght+1 since adding the delimiter above
if (i != selectedColForOlatKey){
sepValTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("ccc"+(i+1), i, null, ureq.getLocale()));
// add every name of a column to a list deployed as pulldown to the user for matching column with olat key
columnNames.add(trans.translate("column", new String[]{""+(i+1)}));
}else{
sepValTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("hhh" + selectedValueOfOlatKey, i, null, ureq.getLocale()));
}
}
sepValTableCtr.setTableDataModel(sepValModel);
colwithbulkactionVC.put("sepValTable", sepValTableCtr.getInitialComponent());
cwbForm = new ColWithBulkActionForm("colwithbulkactionform", trans, columnNames, bulkActions);
cwbForm.addListener(this);
colwithbulkactionVC.put("cwbForm", cwbForm);
wc.setWizardTitle(trans.translate("wizard.step3.title"));
wc.setNextWizardStep(trans.translate("wizard.step3.howto"), colwithbulkactionVC);
}
}else if (source == backLinkKey){
wc.setWizardTitle(trans.translate("wizard.step1.title"));
wc.setBackWizardStep(trans.translate("wizard.step1.howto"), sepValInForm);
// events from step 3
// preparing step 4
}else if (source == cwbForm){
if (event == Form.EVNT_VALIDATION_OK) { // user clicked 'next'-button !!!!!!!
List rowsFourthStep = new ArrayList(rows.size());
for (Iterator iter = rows.iterator(); iter.hasNext();) {
Object[] values = (Object[]) iter.next();
rowsFourthStep.add(values.clone());
}
String selectedColForBulk = cwbForm.getSelectedColumn();
int colForBulk = Integer.parseInt(selectedColForBulk);
// the selected column for the OLAT key was not more shown in the pulldownmenu for
// for choosing the bulkaction, but it is not removed, therefore we have to increment
// the colForBulk in certain cases
if (selectedColForOlatKey <= colForBulk) colForBulk++;
String selectedBulk = cwbForm.getSelectedBulkAction();
int bulk = Integer.parseInt(selectedBulk);
finishedVC = new VelocityContainer("finished", VELOCITY_ROOT + "/finished.html", trans, this);
backLinkFin = LinkFactory.createLinkBack(finishedVC, this);
GenericObjectArrayTableDataModel sepValFinModel = new GenericObjectArrayTableDataModel(rowsFourthStep, numOfLines);
UserManager um = UserManager.getInstance();
Manager secMgr = ManagerFactory.getManager();
BulkActionModule bam = new BulkActionModule();
BulkAction ba = (BulkAction) bulkActions.get(bulk);
List identities = new ArrayList(sepValFinModel.getRowCount());
// read values from the column which the user has defined as olat key (e.g. username)
// and add them to a list.
for(int i = 0; i < sepValFinModel.getRowCount(); i ++ ){
String val = (String) sepValFinModel.getValueAt(i, selectedColForOlatKey);
val = val.trim();
Identity identity = null;
if (selectedOlatKey == 0) { // matrikelnumber
Map<String, String> searchValue = new HashMap<String, String>();
searchValue.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, val);
List identitiesFoundByInst = ManagerFactory.getManager().getIdentitiesByPowerSearch(null, searchValue, true, null, null, null, null, null, null);
//FIXME:as:b error handling if there is more than one identity found by institutionalUserIdentifier
// see also in BulkAssessmentWizardController
if (identitiesFoundByInst.size() == 1){
identity = (Identity) identitiesFoundByInst.get(0);
}
}else if (selectedOlatKey == 1){ // username
identity = secMgr.findIdentityByName(val);
}else if (selectedOlatKey == 2) { // email
identity = um.findIdentityByEmail(val);
}
identities.add(identity);
}
// get results from the user chosen bulk action for every identity
List bulkResults = bam.apply(identities, ba);
// add the bulk results to the data model
for(int i = 0; i < sepValFinModel.getRowCount(); i++ ){
String result = (String) bulkResults.get(i);
sepValFinModel.setValueAt(result,i,colForBulk);
}
tableConfig.setDownloadOffered(true);
TableController sepValFinTableCtr = new TableController(tableConfig, ureq, getWindowControl(), hcTranslator, this);
columnNames = null;
columnNames = new ArrayList();
for(int i = 0;i < numOfValuesPerLine+1; i++){
if (i == selectedColForOlatKey){
sepValFinTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("hhh" + selectedValueOfOlatKey, i, null, ureq.getLocale()));
}else if (i == colForBulk){
sepValFinTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("hhh" + ba.getDisplayName(), i, null, ureq.getLocale()));
}else{
sepValFinTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("ccc"+(i+1), i, null, ureq.getLocale()));
}
}
sepValFinTableCtr.setTableDataModel(sepValFinModel);