package gr.ntua.ivml.athena.actions;
import gr.ntua.ivml.athena.db.DB;
import gr.ntua.ivml.athena.persistent.DataUpload;
import gr.ntua.ivml.athena.persistent.XmlObject;
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; }
}
private List<Namespace> namespaces = null;
String uploadId;
String xmlObjectId;
public String getXmlObjectId() {
return xmlObjectId;
}
public void setXmlObjectId(String xmlObjectId) {
this.xmlObjectId = xmlObjectId;
}
public String getUploadId() {
return uploadId;
}
public void setUploadId(String uploadId) {
this.uploadId = uploadId;
}
XmlObject xo;
public List<Namespace> getNamespaces() {
if( namespaces == null ) {
namespaces = new ArrayList<Namespace>();
XmlObject xo = getXmlObject();
if( xo != null) {
for( String[] s2: xo.listUriAndPrefix() ) {
Namespace n = new Namespace();
n.uri = s2[1];
n.prefix = s2[0];
namespaces.add( n ) ;
}
}
}
log.debug( "Namespaces " + namespaces.size());
return namespaces;
}
public XmlObject getXmlObject() {
if( xo == null ) {
try {
if(( getUploadId() != null ) &&
( getUploadId().length() > 0 )) {
DataUpload du = DB.getDataUploadDAO().getById(
Long.parseLong(getUploadId()), false);
if( du != null) xo = du.getXmlObject();
} else if(( getXmlObjectId() != null) &&
( getXmlObjectId().length() > 0 )) {
xo = DB.getXmlObjectDAO().getById(
Long.parseLong(getXmlObjectId()), false );
}
} catch( Exception e ) {
log.error( "Cannot construct XmlObject." , e );
}
}
return xo;
}
@Action(value="Stats")
public String execute() throws Exception {
return SUCCESS;
}
}