/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.vertical.adminweb.handlers.xmlbuilders; import java.util.StringTokenizer; import org.apache.commons.fileupload.FileItem; import org.w3c.dom.Document; import org.w3c.dom.Element; import com.enonic.esl.containers.ExtendedMap; import com.enonic.esl.xml.XMLTool; import com.enonic.vertical.adminweb.AdminHandlerBaseServlet; import com.enonic.vertical.adminweb.VerticalAdminException; import com.enonic.cms.core.content.binary.BinaryData; import com.enonic.cms.core.security.user.User; public class ContentFileXMLBuilder extends ContentBaseXMLBuilder implements ContentXMLBuilder { public String getTitleFormKey() { return "name"; } public String getContentTitle( Element contentDataElem, int contentTypeKey ) { return XMLTool.getElementText( XMLTool.getElement( contentDataElem, "name" ) ); } public void buildContentTypeXML( User user, Document doc, Element contentdata, ExtendedMap formItems ) throws VerticalAdminException { // Name Element tempElement = XMLTool.createElement( doc, contentdata, "name", formItems.getString( "name" ) ); // Description tempElement = XMLTool.createElement( doc, contentdata, "description" ); XMLTool.createCDATASection( doc, tempElement, formItems.getString( "description", "" ) ); // Keywords Element keywords = XMLTool.createElement( doc, contentdata, "keywords" ); if ( formItems.containsKey( "keywords" ) ) { StringTokenizer stringTok = new StringTokenizer( formItems.getString( "keywords" ), " " ); while ( stringTok.hasMoreElements() ) { tempElement = XMLTool.createElement( doc, keywords, "keyword", (String) stringTok.nextElement() ); } } // File size int fileSize = formItems.getInt( "filesize" ); XMLTool.createElement( doc, contentdata, "filesize", String.valueOf( fileSize ) ); tempElement = XMLTool.createElement( doc, contentdata, "binarydata" ); tempElement.setAttribute( "key", (String) formItems.get( "binarydatakey" ) ); } public int[] getDeleteBinaries( final ExtendedMap formItems ) throws VerticalAdminException { final FileItem newfile = formItems.getFileItem( "newfile", null ); if ( newfile != null ) { final int versionKey = formItems.getInt( "versionkey" ); return admin.getBinaryDataKeysByVersion( versionKey ); } return null; } public BinaryData[] getBinaries( ExtendedMap formItems ) throws VerticalAdminException { BinaryData[] binaryData = null; FileItem newfile = formItems.getFileItem( "newfile", null ); if ( newfile != null ) { binaryData = new BinaryData[1]; binaryData[0] = AdminHandlerBaseServlet.createBinaryData( newfile ); if ( formItems.containsKey( "oldbinarydatakey" ) ) { binaryData[0].key = formItems.getInt( "oldbinarydatakey" ); } binaryData[0].label = "source"; // Add the binarydata keys to the form data formItems.put( "binarydatakey", "%0" ); formItems.put( "newbinarydata", "true" ); formItems.put( "filesize", binaryData[0].data.length ); } else { // File was not updated binaryData = new BinaryData[0]; if ( formItems.containsKey( "oldbinarydatakey" ) ) { int oldKey = formItems.getInt( "oldbinarydatakey" ); formItems.put( "binarydatakey", String.valueOf( oldKey ) ); } formItems.put( "filesize", formItems.getInt( "oldfilesize", 0 ) ); } return binaryData; } }