package is.idega.idegaweb.campus.presentation;
import is.idega.idegaweb.campus.business.CampusSettings;
import java.rmi.RemoteException;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.block.category.business.CategoryBusiness;
import com.idega.block.finance.presentation.Finance;
import com.idega.builder.handler.ColorHandler;
import com.idega.presentation.IWContext;
import com.idega.presentation.ui.DataTable;
import com.idega.presentation.ui.DateInput;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
/**
* Title: idegaclasses
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author <a href="mailto:aron@idega.is">aron@idega.is
* @version 1.0
*/
public class SysPropsSetter extends CampusBlock{
private static long day = 1;
private static long month = day*30;
private static long year = day*365;
private CampusSettings settings = null;
public SysPropsSetter() {
}
public String getLocalizedNameKey(){
return "systemproperties";
}
public String getLocalizedNameValue(){
return "Properties";
}
public String getBundleIdentifier(){
return IW_BUNDLE_IDENTIFIER;
}
public void main(IWContext iwc)throws RemoteException{
if(isAdministrator(iwc)){
settings = getCampusSettings(iwc);
if(iwc.isParameterSet("cmp_stng_save")){
saveProperties(iwc);
}
DataTable T = getDataTable();
T.addTitle(localize("system_settings","System settings"));
Form myForm = new Form();
DateInput DI = new DateInput("contract_date",true);
DropdownMenu TI = intDrp("contract_years",10);
DropdownMenu term = termDrp("term");
TextInput termOfNotice = getTextInput("term_of_notice","",4);
termOfNotice.setAsIntegers(localize("please_use_only_integers","Please use only integers"));
termOfNotice.setLength(4);
TextInput adminEmail = getTextInput("admin_email");
TextInput emailHost = getTextInput("email_host");
DropdownMenu sendEventMails = new DropdownMenu("send_event_mail");
sendEventMails = (DropdownMenu) getStyledInterface(sendEventMails);
sendEventMails.addMenuElement(Boolean.toString(true),localize("boolean.true","Yes"));
sendEventMails.addMenuElement(Boolean.toString(false),localize("boolean.false","No"));
String[] filter2 = {com.idega.core.accesscontrol.data.PermissionGroupBMPBean.getStaticPermissionGroupInstance().getGroupTypeValue()};
DropdownMenu groups = null;
try {
String[] filter = new String[1];
filter[0] = com.idega.core.accesscontrol.data.PermissionGroupBMPBean.getStaticPermissionGroupInstance().getGroupTypeValue();
java.util.Collection permissionGroups = getUserService(iwc).getGroupHome().findAllGroups(filter,true);
groups = new DropdownMenu(permissionGroups,"def_group");
}
catch (Exception ex) {
groups = new DropdownMenu("def_group");
}
groups.addMenuElementFirst("-1",localize("group","Group"));
DropdownMenu financeCategories = new DropdownMenu("finance_category");
financeCategories.addMenuElement("-1",localize("category","Category"));
try {
Collection coll = CategoryBusiness.getInstance().getCategoryHome().findRootsByType(Finance.CATEGORY_TYPE);
financeCategories.addMenuElements(coll);
} catch (RemoteException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
int row = 1;
/*
T.add(Edit.formatText(iwrb.getLocalizedString("contract_date","Contract date")),1,row);
T.add(DI,3,row);
if(SysProps.getContractDate()!=null){
//DI.setDate(SysProps.getContractDate());
T.add(getText(new IWTimestamp(SysProps.getContractDate()).toString()),4,row);
}
row++;
*/
if(settings.getAdminEmail()!= null)
adminEmail.setContent(settings.getAdminEmail());
if(settings.getSmtpServer()!= null)
emailHost.setContent(settings.getSmtpServer());
sendEventMails.setSelectedElement(Boolean.toString(settings.getSendEventMail()));
String transferColor = settings.getTransferBackgroundColor();
if(transferColor==null)
transferColor = "";
ColorHandler transferColorHandler = new ColorHandler();
/*
T.add(Edit.formatText(iwrb.getLocalizedString("contract_years","Contract years")),1,row);
if(SysProps.getContractYears() > 0){
T.add(Edit.formatText(SysProps.getContractYears()),4,row);
}
T.add(TI,3,row);
row++;
*/
T.add(getHeader(localize("term_of_notice","Term of notice")),1,row);
if(settings.getTermOfNoticeDays()!=null && settings.getTermOfNoticeDays().intValue() >= 0){
long iTerm = settings.getTermOfNoticeDays().intValue() ;
long i = iTerm/year;
String selected = "1";
if(i != 0){
iTerm = i;
selected = "2";
}
else if((i = iTerm/month) != 0 ){
iTerm = i;
selected = "1";
}
else{
selected = "0";
}
term.setSelectedElement(selected);
termOfNotice.setContent(String.valueOf(iTerm));
}
T.add(termOfNotice ,3,row);
T.add(term,3,row);
row++;
T.add(getHeader(localize("tenant_group","Tenant group")),1,row);
Integer groupId = settings.getTenantGroupID();
if(groupId!=null && groupId.intValue() > 0){
groups.setSelectedElement(String.valueOf(groupId));
}
T.add(groups,3,row);
row++;
T.add(getHeader(localize("finance_category","Finance Category")),1,row);
Integer finCatId = settings.getFinanceCategoryID();
if(finCatId!=null && finCatId.intValue() > 0){
financeCategories.setSelectedElement(finCatId.toString());
}
T.add(financeCategories,3,row);
row++;
T.add(getHeader(localize("admin_email","Admin Email")),1,row);
T.add(adminEmail,3,row);
row++;
T.add(getHeader(localize("email_host","Email Host")),1,row);
T.add(emailHost,3,row);
row++;
T.add(getHeader(localize("send_event_mails","Send event mails")),1,row);
T.add(sendEventMails,3,row);
row++;
T.add(getHeader(localize("transfer_background_color","Transfer background")),1,row);
T.add(transferColorHandler.getHandlerObject("transfer_color",transferColor,iwc),3,row);
row++;
SubmitButton save =(SubmitButton)getSubmitButton("cmp_stng_save","true","Save","save");
T.addButton(save);
myForm.add(T);
add(myForm);
}
else{
add( getNoAccessObject(iwc));
}
}
public void saveProperties(IWContext iwc) throws RemoteException{
String contractDate = iwc.getParameter("contract_date");
String contractYears = iwc.getParameter("contract_years");
String adminEmail = iwc.getParameter("admin_email");
String emailHost = iwc.getParameter("email_host");
String defaultGroup = iwc.getParameter("def_group");
String termOfNotice = iwc.getParameter("term_of_notice");
String financeCategory = iwc.getParameter("finance_category");
String term = iwc.getParameter("term");
String sendEventMails = iwc.getParameter("send_event_mail");
String transferColor = iwc.getParameter("transfer_color");
if(settings !=null){
/*if(contractDate.length() == 10){
settings.setContractDate(new IWTimestamp(contractDate).getSQLDate());
}
if(contractYears !=null){
int years = -1;
try{
years = Integer.parseInt(contractYears);
}
catch(Exception e) {}
SysProps.setContractYears(years);
}
*/
if(!"".equals(termOfNotice )){
long iTerm = Long.parseLong(termOfNotice );
if(!"".equals(term )){
int i = Integer.parseInt(term);
switch (i) {
case 0: iTerm *=day ; break;
case 1: iTerm *=month ; break;
case 2: iTerm *=year ; break;
}
}
settings.setTermOfNoticeDays(new Integer((int)iTerm));
}
else{
settings.setTermOfNoticeDays(new Integer(0));
}
if(!"".equals(adminEmail)){
settings.setAdminEmail(adminEmail);
}
if(!"".equals(emailHost)){
settings.setSmtpServer(emailHost);
}
if(!"".equals(defaultGroup)){
settings.setTenantGroupID(Integer.valueOf(defaultGroup));
}
if(!"".equals(financeCategory)){
settings.setFinanceCategoryID(Integer.valueOf(financeCategory));
}
if(!"".equals(sendEventMails)){
settings.setSendEventMail(Boolean.valueOf(sendEventMails).booleanValue());
}
if(!"".equals(transferColor)){
settings.setTransferBackgroundColor(transferColor);
}
getCampusService(iwc).storeSettings(settings);
}
}
private DropdownMenu termDrp(String name){
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElement("0",localize("day","Day"));
drp.addMenuElement("1",localize("month","Month"));
drp.addMenuElement("2",localize("year","Year"));
drp.setSelectedElement("0");
return drp;
}
private DropdownMenu intDrp(String name,int I){
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElement(-1,"--");
for (int i = 1; i <= I; i++) {
drp.addMenuElement(String.valueOf(i));
}
return drp;
}
}