package com.idega.block.boxoffice.presentation;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import com.idega.idegaweb.block.presentation.Builderaware;
import com.idega.block.boxoffice.business.BoxBusiness;
import com.idega.block.boxoffice.business.BoxFinder;
import com.idega.block.boxoffice.data.BoxCategory;
import com.idega.block.boxoffice.data.BoxEntity;
import com.idega.block.text.business.TextFinder;
import com.idega.block.text.data.LocalizedText;
import com.idega.core.accesscontrol.business.LoginBusinessBean;
import com.idega.core.localisation.business.ICLocaleBusiness;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.idegaweb.presentation.IWAdminWindow;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SelectionBox;
import com.idega.presentation.ui.SelectionDoubleBox;
import com.idega.presentation.ui.SubmitButton;
public class BoxCategoryChooser extends IWAdminWindow{
private final static String IW_BUNDLE_IDENTIFIER="com.idega.block.boxoffice";
private boolean _isAdmin = false;
private boolean _save = false;
private boolean _update = false;
private int _userID = -1;
private int _boxID = -1;
private int _boxCategoryID = -1;
private IWBundle _iwb;
private IWResourceBundle _iwrb;
public BoxCategoryChooser(){
setWidth(380);
setHeight(180);
setMethod("get");
}
public void main(IWContext iwc) throws Exception {
/**
* @todo permission
*/
this._isAdmin = true; //AccessControl.hasEditPermission(this,iwc);
this._iwb = iwc.getIWMainApplication().getBundle(Builderaware.IW_CORE_BUNDLE_IDENTIFIER);
this._iwrb = getResourceBundle(iwc);
addTitle(this._iwrb.getLocalizedString("box_category_choose","Category Chooser"));
Locale currentLocale = iwc.getCurrentLocale();
Locale chosenLocale;
try {
this._userID = LoginBusinessBean.getUser(iwc).getID();
}
catch (Exception e) {
this._userID = -1;
}
String sLocaleId = iwc.getParameter(BoxBusiness.PARAMETER_LOCALE_DROP);
int iLocaleId = -1;
if(sLocaleId!= null){
iLocaleId = Integer.parseInt(sLocaleId);
chosenLocale = ICLocaleBusiness.getLocaleReturnIcelandicLocaleIfNotFound(iLocaleId);
}
else{
chosenLocale = currentLocale;
iLocaleId = ICLocaleBusiness.getLocaleId(chosenLocale);
}
if ( this._isAdmin ) {
processForm(iwc, iLocaleId, sLocaleId);
}
else {
noAccess();
}
}
private void processForm(IWContext iwc, int iLocaleId, String sLocaleId) {
if ( iwc.getParameter(BoxBusiness.PARAMETER_BOX_ID) != null ) {
try {
this._boxID = Integer.parseInt(iwc.getParameter(BoxBusiness.PARAMETER_BOX_ID));
}
catch (NumberFormatException e) {
this._boxID = -1;
}
}
if ( iwc.getParameter(BoxBusiness.PARAMETER_MODE) != null ) {
if ( iwc.getParameter(BoxBusiness.PARAMETER_MODE).equalsIgnoreCase(BoxBusiness.PARAMETER_CLOSE) ) {
close();
}
else if ( iwc.getParameter(BoxBusiness.PARAMETER_MODE).equalsIgnoreCase(BoxBusiness.PARAMETER_SAVE) ) {
save(iwc);
}
}
initializeFields(iLocaleId);
}
private void initializeFields(int iLocaleID) {
Form myForm = new Form();
myForm.setMethod("get");
Table formTable = new Table(1,2);
formTable.setAlignment(1,2,"right");
SelectionDoubleBox sdb = new SelectionDoubleBox(BoxBusiness.CATEGORY_SELECTION,"Not in","In");
SelectionBox left = sdb.getLeftBox();
left.setMarkupAttribute("style",STYLE);
left.setHeight(6);
left.selectAllOnSubmit();
SelectionBox right = sdb.getRightBox();
right.setMarkupAttribute("style",STYLE);
right.setHeight(6);
right.selectAllOnSubmit();
List categoriesInBox = BoxFinder.getCategoriesInBox(this._boxID);
Iterator iter = null;
if(categoriesInBox != null){
iter = categoriesInBox.iterator();
while (iter.hasNext()) {
BoxCategory item = (BoxCategory) iter.next();
LocalizedText locText = TextFinder.getLocalizedText(item,iLocaleID);
String locString = "$language$";
if ( locText != null ) {
locString = locText.getHeadline();
}
right.addElement(Integer.toString(item.getID()),locString);
}
}
List categoriesNotInBox = BoxFinder.getAllCategories();
if(categoriesNotInBox != null){
if (categoriesInBox != null) {
categoriesNotInBox.removeAll(categoriesInBox);
}
iter = categoriesNotInBox.iterator();
while (iter.hasNext()) {
BoxCategory item = (BoxCategory) iter.next();
LocalizedText locText = TextFinder.getLocalizedText(item,iLocaleID);
String locString = "$language$";
if ( locText != null ) {
locString = locText.getHeadline();
}
left.addElement(Integer.toString(item.getID()),locString);
}
}
formTable.add(new SubmitButton(this._iwrb.getLocalizedImageButton("close","CLOSE"),BoxBusiness.PARAMETER_MODE,BoxBusiness.PARAMETER_CLOSE),1,2);
formTable.add(new SubmitButton(this._iwrb.getLocalizedImageButton("save","SAVE"),BoxBusiness.PARAMETER_MODE,BoxBusiness.PARAMETER_SAVE),1,2);
myForm.add(new HiddenInput(BoxBusiness.PARAMETER_BOX_ID,Integer.toString(this._boxID)));
formTable.add(sdb,1,1);
myForm.add(formTable);
add(myForm);
}
private void save(IWContext iwc) {
BoxEntity box = BoxFinder.getBox(this._boxID);
String[] detach = iwc.getParameterValues(BoxBusiness.CATEGORY_SELECTION+"_left");
if ( detach != null ) {
for ( int a = 0; a < detach.length; a++ ) {
BoxBusiness.detachCategory(this._boxID,Integer.parseInt(detach[a]));
}
}
String[] attach = iwc.getParameterValues(BoxBusiness.CATEGORY_SELECTION);
if ( attach != null ) {
for ( int a = 0; a < attach.length; a++ ) {
BoxBusiness.addToBox(box,Integer.parseInt(attach[a]));
}
}
setParentToReload();
close();
}
private void noAccess() throws IOException,SQLException {
close();
}
public String getBundleIdentifier(){
return IW_BUNDLE_IDENTIFIER;
}
}