Fix für Ticket 379

git-svn-id: https://svn.libreccm.org/ccm/trunk@972 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-06-19 08:22:06 +00:00
parent f16a543f86
commit c3e8aa14b3
2 changed files with 69 additions and 68 deletions

View File

@ -53,10 +53,9 @@ import org.apache.log4j.Logger;
public class ReusableImageAsset extends ImageAsset { public class ReusableImageAsset extends ImageAsset {
private static final Logger s_log = private static final Logger s_log =
Logger.getLogger( ReusableImageAsset.class ); Logger.getLogger(ReusableImageAsset.class);
public static final String BASE_DATA_OBJECT_TYPE = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.ReusableImageAsset"; "com.arsdigita.cms.ReusableImageAsset";
/** /**
* Default constructor. This creates a new image asset. * Default constructor. This creates a new image asset.
@ -148,36 +147,37 @@ public class ReusableImageAsset extends ImageAsset {
* @param defaultMimeType The default mime type for the file * @param defaultMimeType The default mime type for the file
*/ */
public void loadFromFile(String fileName, File file, String defaultMimeType) public void loadFromFile(String fileName, File file, String defaultMimeType)
throws IOException { throws IOException {
// Guess mime type // Guess mime type
MimeType mime = MimeType.guessMimeTypeFromFile(fileName); MimeType mime = MimeType.guessMimeTypeFromFile(fileName);
if( s_log.isDebugEnabled() ) { if (s_log.isDebugEnabled()) {
s_log.debug( "Mime type is " + ( null == mime ? "null" : mime.getMimeType() ) ); s_log.debug("Mime type is " + (null == mime ? "null" : mime.
getMimeType()));
} }
RenderedImage image = JAI.create( "FileLoad", file.getPath() ); RenderedImage image = JAI.create("FileLoad", file.getPath());
int width = image.getWidth(); int width = image.getWidth();
int height = image.getHeight(); int height = image.getHeight();
if( s_log.isDebugEnabled() ) { if (s_log.isDebugEnabled()) {
s_log.debug( "Width: " + width ); s_log.debug("Width: " + width);
s_log.debug( "Height: " + height ); s_log.debug("Height: " + height);
} }
if( s_log.isDebugEnabled() ) { if (s_log.isDebugEnabled()) {
String[] props = image.getPropertyNames(); String[] props = image.getPropertyNames();
for( int i = 0; i < props.length; i++ ) { for (int i = 0; i < props.length; i++) {
String prop = props[i]; String prop = props[i];
s_log.debug( prop + ": " + image.getProperty( prop ) ); s_log.debug(prop + ": " + image.getProperty(prop));
} }
} }
setWidth( new BigDecimal( width ) ); setWidth(new BigDecimal(width));
setHeight( new BigDecimal( height ) ); setHeight(new BigDecimal(height));
if(mime == null || !( mime instanceof ImageMimeType ) ) { if (mime == null || !(mime instanceof ImageMimeType)) {
mime = MimeType.loadMimeType(defaultMimeType); mime = MimeType.loadMimeType(defaultMimeType);
} }
@ -185,12 +185,12 @@ public class ReusableImageAsset extends ImageAsset {
// Extract the filename // Extract the filename
int i = fileName.lastIndexOf("/"); int i = fileName.lastIndexOf("/");
if(i > 0) { if (i > 0) {
fileName = fileName.substring(i+1); fileName = fileName.substring(i + 1);
} }
i = fileName.lastIndexOf("\\"); // DOS-style i = fileName.lastIndexOf("\\"); // DOS-style
if(i > 0) { if (i > 0) {
fileName = fileName.substring(i+1); fileName = fileName.substring(i + 1);
} }
setName(fileName); setName(fileName);
@ -205,7 +205,7 @@ public class ReusableImageAsset extends ImageAsset {
* @param file The file on the server to write to. * @param file The file on the server to write to.
*/ */
public void writeToFile(File file) public void writeToFile(File file)
throws IOException { throws IOException {
FileOutputStream fs = new FileOutputStream(file); FileOutputStream fs = new FileOutputStream(file);
try { try {
fs.write(getContent()); fs.write(getContent());
@ -217,17 +217,22 @@ public class ReusableImageAsset extends ImageAsset {
} }
} }
/** /**
* Retrieve all images in the database. Expensive operation. * Retrieve all images in the database. Expensive operation.
* *
* @return a collection of ReusableImageAssets * @return a collection of ReusableImageAssets
*/ */
public static ImageAssetCollection getAllReusableImages() { public static ImageAssetCollection getAllReusableImages() {
DataCollection da = SessionManager.getSession().retrieve DataCollection da = SessionManager.getSession().retrieve(
(BASE_DATA_OBJECT_TYPE); BASE_DATA_OBJECT_TYPE);
da.addEqualsFilter(VersionedACSObject.IS_DELETED, new Integer(0)); //da.addEqualsFilter(VersionedACSObject.IS_DELETED, new Integer(0));
da.addEqualsFilter(ACSObject.OBJECT_TYPE, BASE_DATA_OBJECT_TYPE); //da.addEqualsFilter(ACSObject.OBJECT_TYPE, BASE_DATA_OBJECT_TYPE);
da.addFilter(String.format("%s = '%s'",
VersionedACSObject.IS_DELETED,
"0"));
da.addFilter(String.format("%s = '%s'",
ACSObject.OBJECT_TYPE,
BASE_DATA_OBJECT_TYPE));
return new ImageAssetCollection(da); return new ImageAssetCollection(da);
} }
@ -240,15 +245,14 @@ public class ReusableImageAsset extends ImageAsset {
* @return a collection of images whose name matches the keyword * @return a collection of images whose name matches the keyword
*/ */
public static ImageAssetCollection getReusableImagesByKeyword( public static ImageAssetCollection getReusableImagesByKeyword(
String keyword, String context String keyword, String context) {
) {
ImageAssetCollection c = getAllReusableImages(); ImageAssetCollection c = getAllReusableImages();
c.addOrder(Asset.NAME); c.addOrder(Asset.NAME);
Filter f; Filter f;
if(!(keyword == null || keyword.length() < 1)) { if (!(keyword == null || keyword.length() < 1)) {
f = c.addFilter("lower(name) like lower(\'%\' || :keyword || \'%\')"); f = c.addFilter("lower(name) like lower(\'%\' || :keyword || \'%\')");
f.set("keyword", keyword); f.set("keyword", keyword);
} }
f = c.addFilter("version = :version"); f = c.addFilter("version = :version");
f.set("version", context); f.set("version", context);
return c; return c;
@ -263,6 +267,4 @@ public class ReusableImageAsset extends ImageAsset {
public static ImageAssetCollection getReusableImagesByKeyword(String keyword) { public static ImageAssetCollection getReusableImagesByKeyword(String keyword) {
return getReusableImagesByKeyword(keyword, ContentItem.DRAFT); return getReusableImagesByKeyword(keyword, ContentItem.DRAFT);
} }
} }

View File

@ -39,16 +39,14 @@ import com.arsdigita.util.LockableImpl;
* @version $Id: DefaultImageBrowserModelBuilder.java 1940 2009-05-29 07:15:05Z terry $ * @version $Id: DefaultImageBrowserModelBuilder.java 1940 2009-05-29 07:15:05Z terry $
*/ */
public class DefaultImageBrowserModelBuilder extends LockableImpl public class DefaultImageBrowserModelBuilder extends LockableImpl
implements ImageBrowserModelBuilder, PaginationModelBuilder { implements ImageBrowserModelBuilder, PaginationModelBuilder {
private SingleSelectionModel m_keywordModel; private SingleSelectionModel m_keywordModel;
private static ImageBrowserModel EMPTY_MODEL = private static ImageBrowserModel EMPTY_MODEL =
new EmptyImageBrowserModel(); new EmptyImageBrowserModel();
private ImageBrowser m_imageBrowser; private ImageBrowser m_imageBrowser;
private RequestLocal m_size; private RequestLocal m_size;
private RequestLocal m_imageColl; private RequestLocal m_imageColl;
private String m_context; private String m_context;
/** /**
@ -60,13 +58,12 @@ public class DefaultImageBrowserModelBuilder extends LockableImpl
* {@link ContentItem#DRAFT} or {@link ContentItem#LIVE} * {@link ContentItem#DRAFT} or {@link ContentItem#LIVE}
*/ */
public DefaultImageBrowserModelBuilder( public DefaultImageBrowserModelBuilder(
SingleSelectionModel keywordModel, String context SingleSelectionModel keywordModel, String context) {
) {
super(); super();
m_keywordModel = keywordModel; m_keywordModel = keywordModel;
m_context = context; m_context = context;
m_size = new RequestLocal(); m_size = new RequestLocal();
m_imageColl = new RequestLocal(); m_imageColl = new RequestLocal();
} }
/** /**
@ -85,9 +82,10 @@ public class DefaultImageBrowserModelBuilder extends LockableImpl
public ImageBrowserModel makeModel(ImageBrowser browser, PageState s) { public ImageBrowserModel makeModel(ImageBrowser browser, PageState s) {
//String key = (String)m_keywordModel.getSelectedKey(s); //String key = (String)m_keywordModel.getSelectedKey(s);
// pass through key even if null -- null key will return all rows in m_context. // pass through key even if null -- null key will return all rows in m_context.
//ImageAssetCollection c = ReusableImageAsset.getReusableImagesByKeyword(key, m_context); //ImageAssetCollection c = ReusableImageAsset.getReusableImagesByKeyword(key, m_context);
return new DefaultImageBrowserModel((ImageAssetCollection) m_imageColl.get(s)); return new DefaultImageBrowserModel((ImageAssetCollection) m_imageColl.
get(s));
} }
/** /**
@ -107,32 +105,34 @@ public class DefaultImageBrowserModelBuilder extends LockableImpl
} }
public int getTotalSize(Paginator paginator, PageState state) { public int getTotalSize(Paginator paginator, PageState state) {
Integer size = (Integer) m_size.get(state);
if (size == null) {
String key = (String)m_keywordModel.getSelectedKey(state);
ImageAssetCollection c = ReusableImageAsset.getReusableImagesByKeyword(key, m_context);
if (c == null) {
return 0;
}
size = new Integer( (int) ReusableImageAsset.getReusableImagesByKeyword(key, m_context).size()); Integer size = (Integer) m_size.get(state);
c.setRange(new Integer(paginator.getFirst(state)), if (size == null) {
new Integer(paginator.getLast(state) + 1));
String key = (String) m_keywordModel.getSelectedKey(state);
m_size.set(state, size); ImageAssetCollection c = ReusableImageAsset.
m_imageColl.set(state, c); getReusableImagesByKeyword(key, m_context);
} if (c == null) {
return 0;
return size.intValue(); }
size = new Integer( (int) ReusableImageAsset.getReusableImagesByKeyword(key, m_context).size());
c.setRange(new Integer(paginator.getFirst(state)),
new Integer(paginator.getLast(state) + 1));
m_size.set(state, size);
m_imageColl.set(state, c);
}
return size.intValue();
} }
public void setImageBrowser(ImageBrowser ib) { public void setImageBrowser(ImageBrowser ib) {
m_imageBrowser = ib; m_imageBrowser = ib;
} }
/** /**
* Indicates whether the paginator should be visible, * Indicates whether the paginator should be visible,
* based on the visibility of the image browser itself. * based on the visibility of the image browser itself.
@ -141,7 +141,6 @@ public class DefaultImageBrowserModelBuilder extends LockableImpl
* associated image browser is unknown. * associated image browser is unknown.
*/ */
public boolean isVisible(PageState state) { public boolean isVisible(PageState state) {
return (m_imageBrowser != null)?m_imageBrowser.isVisible(state):true; return (m_imageBrowser != null) ? m_imageBrowser.isVisible(state) : true;
} }
} }