package gr.ntua.ivml.athena.util; import gr.ntua.ivml.athena.db.DB; import gr.ntua.ivml.athena.persistent.DataUpload; import gr.ntua.ivml.athena.persistent.Publication; import gr.ntua.ivml.athena.persistent.XpathHolder; import gr.ntua.ivml.athena.util.Transform; import gr.ntua.ivml.athena.persistent.User; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; public class Import { private DataUpload du; private String message=""; private String status=""; private String formattedMessage=""; private String statusIcon=""; private Transform trans; private Publish pub; public Import( DataUpload du ) { this.du = du; } public boolean isLido(){ return du.isLido() || du.isLido10(); } public boolean isLido10(){ return du.isLido10(); } public Publish getPub(){ if(pub==null){ this.pub=new gr.ntua.ivml.athena.util.Publish(du.getDbID()); } return pub; } public Transform getTrans(){ if(trans==null){ this.trans=new gr.ntua.ivml.athena.util.Transform(du.getDbID()); } return trans; } public long getUploader(){ return this.du.getUploader().getDbID(); } public String getName() { return du.getOriginalFilename(); } public String getSize() { if( du.getUploadSize() > 0 ) return Long.toString( du.getUploadSize()); else return ""; } public String getFormattedMessage(){ this.formattedMessage=this.getMessage(); this.formattedMessage=formattedMessage.replace("\n", "\\n"); return this.formattedMessage; } public String getDate() { Date d = du.getUploadDate(); if( d == null ) return ""; else return new SimpleDateFormat("dd/MM/yyyy HH:mm").format(d); } public String getStatus() { this.status=du.getStatusText(); return this.status; } public String getMessage() { return du.getMessage().replaceAll("\n", "\\\\n"); } public String getStatusIcon(){ if(this.getStatus().equalsIgnoreCase("OK")){ this.statusIcon="images/ok.png"; } else if(this.getStatus().equalsIgnoreCase("ERROR")){ this.statusIcon="images/problem.png"; } else{ this.statusIcon="images/loader.gif"; } return this.statusIcon; } public long getDbID() { return du.getDbID(); } public int getNoOfFiles() { return du.getNoOfFiles(); } public String getSizeDescription() { long size = du.getUploadSize(); StringBuffer msg = new StringBuffer(); //TODO change to byte conversion if( size > 0 ) { int mag = 0; while( size >= 1000) { size = size / 10; mag++; } char[] oMag = { 'K', 'M', 'G' }; if( mag > 0 ) msg.append( oMag[ (mag-1)/3 ]); msg.insert(0, size ); // and now the dot if( mag%3 != 0 ) msg.insert( mag%3, "."); } else { // no upload size .. bummer } if( du.getNoOfFiles() > 1 ) { if( msg.length()>0) msg.append( " in " ); msg.append( du.getNoOfFiles()); if(getOai().length()>0){ msg.append(" responses"); }else{ msg.append(" files"); } } return msg.toString(); } public boolean isZip() { return (this.getName().endsWith("zip") || this.getName().endsWith("rar")); } public boolean isExcel() { return "xls".equals( du.getStructuralFormat()); } public String getOai() { if( du.isOaiHarvest()) return du.getSourceURL(); else return ""; } public String getFullOai() { if( du.isOaiHarvest()) return du.getSourceURL(); else return ""; } public boolean isLocked( User u, String sessionId ) { return !DB.getLockManager().canAccess( u, sessionId, du ); } public boolean isRootDefined(){ XpathHolder level_xp = this.du.getItemXpath(); if(level_xp == null || level_xp.getXpathWithPrefix(true).length()==0) return false; else return true; } }