package is.idega.idegaweb.campus.block.phone.presentation; import is.idega.idegaweb.campus.block.phone.business.PhoneFileHandler; import is.idega.idegaweb.campus.block.phone.data.PhoneFileInfo; import java.io.File; import java.util.Hashtable; import java.util.List; import java.util.Map; import com.idega.block.finance.presentation.Finance; import com.idega.data.EntityFinder; import com.idega.presentation.IWContext; import com.idega.presentation.PresentationObject; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.HiddenInput; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.util.Edit; /** * Title: * Description: * Copyright: Copyright (c) 2000-2001 idega.is All Rights Reserved * Company: idega *@author <a href="mailto:aron@idega.is">Aron Birkir</a> * @version 1.1 */ public class PhoneAssessment extends Finance { protected final int ACT1 = 1,ACT2 = 2, ACT3 = 3,ACT4 = 4,ACT5 = 5; private final static String sAction = "cam.ph.file.action"; private final static String IW_BUNDLE_IDENTIFIER="is.idega.idegaweb.campus"; protected boolean isAdmin = false; private String dir = "/phone/upload/"; protected void control(IWContext iwc){ Table T = new Table(); T.setCellpadding(0); T.setCellspacing(0); T.setWidth("100%"); if(isAdmin){ T.add(Edit.headerText(iwrb.getLocalizedString("phone_files","Phone Files"),3),1,1); T.add(makeLinkTable( 1),1,2); int iAction = 0; if(iwc.getParameter(sAction )!= null){ iAction = Integer.parseInt(iwc.getParameter(sAction )); } switch (iAction) { case ACT1 : T.add(getReadTable(iwc),1,3); break; case ACT2 : T.add(getProcessTable(iwc),1,3); break; default: T.add(getFileTable(iwc),1,3); break; } } else T.add(Edit.formatText(iwrb.getLocalizedString("access_denied","Access denied"))); //add(String.valueOf(iSubjectId)); add(T); } protected PresentationObject makeLinkTable(int menuNr){ Table LinkTable = new Table(3,1); int last = 3; LinkTable.setWidth("100%"); LinkTable.setCellpadding(2); LinkTable.setCellspacing(1); LinkTable.setColor(Edit.colorDark); LinkTable.setWidth(last,"100%"); return LinkTable; } public String getBundleIdentifier(){ return IW_BUNDLE_IDENTIFIER; } private PresentationObject getReadTable(IWContext iwc){ Form form = new Form(); Table T = new Table(); String fileName = iwc.getParameter("filename"); T.add(Edit.formatText(iwrb.getLocalizedString("filename","Filename")),1,1); T.add(Edit.formatText(iwrb.getLocalizedString("filesize","Filesize")),2,1); if(fileName != null){ try { File F = new File(dir,fileName); T.add(Edit.formatText(F.getName()),1,2); T.add(Edit.formatText(new Long(F.length()).toString()),2,2); T.add(new HiddenInput(sAction,String.valueOf(ACT2))); T.add(new HiddenInput("filename",fileName)); SubmitButton read = new SubmitButton("read",iwrb.getLocalizedString("read","Read")); Edit.setStyle(read); T.add(read,3,2); } catch (Exception ex) { T.add(Edit.formatText(iwrb.getLocalizedString("no_file","No file")),1,2); } } form.add(T); return form; } private PresentationObject getProcessTable(IWContext iwc){ String fileName = iwc.getParameter("filename"); if(fileName != null){ String filePath = iwc.getIWMainApplication().getRealPath(dir+fileName); new PhoneFileHandler().processFile(filePath); } return getFileTable(iwc); } private PresentationObject getFileTable(IWContext iwc){ Table T = new Table(); T.setCellpadding(0); T.setCellspacing(0); T.add(Edit.formatText(iwrb.getLocalizedString("files","Files")),1,1); T.add(Edit.formatText(iwrb.getLocalizedString("status","Status")),2,1); T.add(Edit.formatText(iwrb.getLocalizedString("time_read","Time read")),3,1); T.add(Edit.formatText(iwrb.getLocalizedString("line_count","Line Count")),4,1); T.add(Edit.formatText(iwrb.getLocalizedString("phone_numbers","PhoneNumbers")),5,1); T.add(Edit.formatText(iwrb.getLocalizedString("amount_read","Amount read")),6,1); Map M = mapOfReadFilesByFileName() ; try{ File F = new File(iwc.getIWMainApplication().getRealPath("/phone/upload")); File[] Fs = F.listFiles(); if(Fs.length > 0){ String name; PhoneFileInfo info; java.text.NumberFormat NF = java.text.NumberFormat.getInstance(); int row = 2; for (int i = 0; i < Fs.length; i++) { name = Fs[i].getName(); if(M!= null && M.containsKey(name)){ info = (PhoneFileInfo) M.get(name); T.add(Edit.formatText(name),1,row); T.add(Edit.formatText(iwrb.getLocalizedString("read","Read")),2,row); T.add(Edit.formatText(info.getReadTime().toString()),3,row); T.add(Edit.formatText(info.getLineCount()),4,row); T.add(Edit.formatText(info.getNumberCount()),5,row); T.add(Edit.formatText(NF.format(info.getTotalAmount())),6,row); } else{ Link L = new Link(name); L.addParameter(sAction,ACT1); L.addParameter("filename",name); L.setFontSize(Edit.textFontSize); T.add(L,1,row); T.add(Edit.formatText(iwrb.getLocalizedString("unread","Unread")),2,row); } row++; } } else{ T.add(iwrb.getLocalizedString("no_files","No files")); } } catch(Exception e){ e.printStackTrace(); } T.setColumnAlignment(4,"right"); T.setColumnAlignment(5,"right"); T.setColumnAlignment(6,"right"); T.setWidth("100%"); T.setCellpadding(2); T.setCellspacing(1); T.setHorizontalZebraColored(Edit.colorLight,Edit.colorWhite); T.setRowColor(1,Edit.colorMiddle); return T; } private Map mapOfReadFilesByFileName(){ List L = null; Hashtable H = null; try { L = EntityFinder.getInstance().findAll(PhoneFileInfo.class); if(L!= null){ int len = L.size(); H = new Hashtable(len); for (int i = 0; i < len; i++) { PhoneFileInfo info = (PhoneFileInfo) L.get(i); H.put(info.getName(),info); } } } catch (Exception ex) { ex.printStackTrace(); } return H; } public void main(IWContext iwc){ //isStaff = com.idega.core.accesscontrol.business.AccessControl isAdmin = iwc.hasEditPermission(this); control(iwc); } }