libreccm-legacy/ccm-docmgr/src/com/arsdigita/cms/docmgr/ui/FilePropertiesPanel.java

144 lines
5.3 KiB
Java
Executable File

/*
* Copyright (C) 2001, 2002 Red Hat Inc. All Rights Reserved.
*
* The contents of this file are subject to the CCM Public
* License (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of
* the License at http://www.redhat.com/licenses/ccmpl.html
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
*/
package com.arsdigita.cms.docmgr.ui;
import java.math.BigDecimal;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.SimpleComponent;
import com.arsdigita.categorization.Category;
import com.arsdigita.categorization.CategoryCollection;
import com.arsdigita.cms.docmgr.Document;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.versioning.TransactionCollection;
import com.arsdigita.versioning.Versions;
import com.arsdigita.web.ParameterMap;
import com.arsdigita.web.URL;
import com.arsdigita.xml.Element;
/**
* A simple custom bebop component that summarizes the properties of a
* file in tabular form.
*
* @author StefanDeusch@computer.org, ddao@arsdigita.com
* @version $Id: FilePropertiesPanel.java,v 1.4 2004/12/09 14:46:39 pkopunec Exp $
*/
class FilePropertiesPanel extends SimpleComponent implements DMConstants {
private static final Logger s_log = Logger.getLogger
(FilePropertiesPanel.class);
private FileInfoPropertiesPane m_parent;
public FilePropertiesPanel(FileInfoPropertiesPane parent) {
super();
m_parent = parent;
}
public void generateXML(PageState state, Element parent) {
// Get doc id.
BigDecimal id = (BigDecimal) state.getValue(m_parent.getFileIDParam());
Element element = parent.newChildElement("docs:file-info", DOCS_XML_NS);
try {
// Retrieve resource properties.
Document doc = new Document(id);
s_log.debug("doc raw content: "+doc.getSearchRawContent());
//s_log.debug("doc xml content: "+doc.getSearchXMLContent());
Element titleElement =
element.newChildElement("docs:title", DOCS_XML_NS);
titleElement.setText(doc.getTitle());
Element nameElement =
element.newChildElement("docs:name", DOCS_XML_NS);
nameElement.setText(doc.getName());
Element descriptionElement =
element.newChildElement("docs:description", DOCS_XML_NS);
String description = doc.getDescription();
if (description != null) {
descriptionElement.setText(description);
}
Element sizeElement =
element.newChildElement("docs:size", DOCS_XML_NS);
sizeElement.setText
(DMUtils.FileSize.formatFileSize(doc.getSize()));
Element typeElement =
element.newChildElement("docs:type", DOCS_XML_NS);
// Retrieve pretty name for a mime type.
typeElement.setText(doc.getPrettyMimeType());
Element lastModifiedElement =
element.newChildElement("docs:last-modified", DOCS_XML_NS);
lastModifiedElement.setText
(null != doc.getLastModifiedLocal() ?
DMUtils.DateFormat.format(doc.getLastModifiedLocal()) :
"");
Element revisionElement =
element.newChildElement("docs:revision", DOCS_XML_NS);
TransactionCollection tc =
Versions.getTaggedTransactions(doc.getOID());
long numRevs = tc.size();
revisionElement.setText(numRevs + "");
// Must allow for the possibility that not author is available.
Element authorElement =
element.newChildElement("docs:author", DOCS_XML_NS);
authorElement.setText(doc.getImpliedAuthor());
Element uriElement =
element.newChildElement("docs:uri", DOCS_XML_NS);
uriElement.setText(makeFileURL(doc, state));
Element catsElement =
element.newChildElement("docs:categories", DOCS_XML_NS);
// Iterator cats = doc.getCategories();
CategoryCollection cats = doc.getCategoryCollection();
Category cat;
Element catElement;
while (cats.next()) {
cat = cats.getCategory();
catElement = catsElement.newChildElement("docs:category", DOCS_XML_NS);
catElement.addAttribute("id", cat.getID().toString());
catElement.addAttribute("name", cat.getName());
}
} catch (DataObjectNotFoundException exc) {
Element notfoundElement =
element.newChildElement("docs:notfound", DOCS_XML_NS);
}
}
private static String makeFileURL(Document doc, PageState state) {
final HttpServletRequest req = state.getRequest();
final ParameterMap params = new ParameterMap();
params.setParameter(FILE_ID_PARAM_NAME, doc.getID());
return URL.here(req, "/download/" + doc.getName(), params).toString();
}
}