package gr.ntua.ivml.mint.actions; import gr.ntua.ivml.mint.db.DB; import gr.ntua.ivml.mint.db.GlobalPrefixStore; import gr.ntua.ivml.mint.persistent.DataUpload; import gr.ntua.ivml.mint.persistent.Transformation; import gr.ntua.ivml.mint.persistent.XmlObject; import gr.ntua.ivml.mint.util.StringUtils; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; @Results({ @Result(name="error", location="stats.jsp"), @Result(name="success", location="stats.jsp") }) public class Stats extends GeneralAction { protected final static Logger log = Logger.getLogger(Stats.class); public class Namespace { public void setPrefix(String prefix) { this.prefix = prefix; } public void setUri(String uri) { this.uri = uri; } String prefix; String uri; public String getPrefix() { if( prefix.equals("")) if( uri.equals("")) return "<empty>"; else return "<default>"; else return prefix; } public String getUri() { return uri; } } public class StatView { String name; XmlObject xo; public String getName() { return name; } public String getXmlObjectId() { return xo.getDbID().toString(); } public List<Namespace> getNamespaces() { List<Namespace> namespaces = new ArrayList<Namespace>(); for( String uri: xo.listNamespaces()) { if( StringUtils.empty(uri)) continue; Namespace n = new Namespace(); n.uri = uri; n.prefix = GlobalPrefixStore.getPrefix( uri ); namespaces.add( n ) ; } return namespaces; } } private List<StatView> statViews = null; String uploadId; public String getUploadId() { return uploadId; } public void setUploadId(String uploadId) { this.uploadId = uploadId; } public List<StatView> getViews() { if( statViews == null ) { statViews = new ArrayList<StatView>(); try { StatView sv; Long id = Long.parseLong(getUploadId()); DataUpload du = DB.getDataUploadDAO().getById( id, false ); XmlObject xo = du.getXmlObject(); if( xo != null ) { sv = new StatView(); sv.name = du.getOriginalFilename(); sv.xo = xo; statViews.add( sv ); } if(!du.isDirect()){ for( Transformation tr : du.getTransformations()) { xo = tr.getParsedOutput(); if( xo != null ) { sv = new StatView(); sv.name = "Transformation"; sv.xo = xo; statViews.add( sv ); } } } } catch( Exception e ) { log.error( "Some problem in stats.", e ); } } return statViews; } @Action(value="Stats") public String execute() throws Exception { return SUCCESS; } }