Fix für Ticket 379
git-svn-id: https://svn.libreccm.org/ccm/trunk@972 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
f16a543f86
commit
c3e8aa14b3
|
|
@ -53,10 +53,9 @@ import org.apache.log4j.Logger;
|
|||
public class ReusableImageAsset extends ImageAsset {
|
||||
|
||||
private static final Logger s_log =
|
||||
Logger.getLogger( ReusableImageAsset.class );
|
||||
|
||||
Logger.getLogger(ReusableImageAsset.class);
|
||||
public static final String BASE_DATA_OBJECT_TYPE =
|
||||
"com.arsdigita.cms.ReusableImageAsset";
|
||||
"com.arsdigita.cms.ReusableImageAsset";
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public void loadFromFile(String fileName, File file, String defaultMimeType)
|
||||
throws IOException {
|
||||
throws IOException {
|
||||
|
||||
// Guess mime type
|
||||
MimeType mime = MimeType.guessMimeTypeFromFile(fileName);
|
||||
if( s_log.isDebugEnabled() ) {
|
||||
s_log.debug( "Mime type is " + ( null == mime ? "null" : mime.getMimeType() ) );
|
||||
if (s_log.isDebugEnabled()) {
|
||||
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 height = image.getHeight();
|
||||
|
||||
if( s_log.isDebugEnabled() ) {
|
||||
s_log.debug( "Width: " + width );
|
||||
s_log.debug( "Height: " + height );
|
||||
if (s_log.isDebugEnabled()) {
|
||||
s_log.debug("Width: " + width);
|
||||
s_log.debug("Height: " + height);
|
||||
}
|
||||
|
||||
if( s_log.isDebugEnabled() ) {
|
||||
if (s_log.isDebugEnabled()) {
|
||||
String[] props = image.getPropertyNames();
|
||||
for( int i = 0; i < props.length; i++ ) {
|
||||
for (int i = 0; i < props.length; i++) {
|
||||
String prop = props[i];
|
||||
s_log.debug( prop + ": " + image.getProperty( prop ) );
|
||||
s_log.debug(prop + ": " + image.getProperty(prop));
|
||||
}
|
||||
}
|
||||
|
||||
setWidth( new BigDecimal( width ) );
|
||||
setHeight( new BigDecimal( height ) );
|
||||
setWidth(new BigDecimal(width));
|
||||
setHeight(new BigDecimal(height));
|
||||
|
||||
if(mime == null || !( mime instanceof ImageMimeType ) ) {
|
||||
if (mime == null || !(mime instanceof ImageMimeType)) {
|
||||
mime = MimeType.loadMimeType(defaultMimeType);
|
||||
}
|
||||
|
||||
|
|
@ -185,12 +185,12 @@ public class ReusableImageAsset extends ImageAsset {
|
|||
|
||||
// Extract the filename
|
||||
int i = fileName.lastIndexOf("/");
|
||||
if(i > 0) {
|
||||
fileName = fileName.substring(i+1);
|
||||
if (i > 0) {
|
||||
fileName = fileName.substring(i + 1);
|
||||
}
|
||||
i = fileName.lastIndexOf("\\"); // DOS-style
|
||||
if(i > 0) {
|
||||
fileName = fileName.substring(i+1);
|
||||
if (i > 0) {
|
||||
fileName = fileName.substring(i + 1);
|
||||
}
|
||||
|
||||
setName(fileName);
|
||||
|
|
@ -205,7 +205,7 @@ public class ReusableImageAsset extends ImageAsset {
|
|||
* @param file The file on the server to write to.
|
||||
*/
|
||||
public void writeToFile(File file)
|
||||
throws IOException {
|
||||
throws IOException {
|
||||
FileOutputStream fs = new FileOutputStream(file);
|
||||
try {
|
||||
fs.write(getContent());
|
||||
|
|
@ -217,17 +217,22 @@ public class ReusableImageAsset extends ImageAsset {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve all images in the database. Expensive operation.
|
||||
*
|
||||
* @return a collection of ReusableImageAssets
|
||||
*/
|
||||
public static ImageAssetCollection getAllReusableImages() {
|
||||
DataCollection da = SessionManager.getSession().retrieve
|
||||
(BASE_DATA_OBJECT_TYPE);
|
||||
da.addEqualsFilter(VersionedACSObject.IS_DELETED, new Integer(0));
|
||||
da.addEqualsFilter(ACSObject.OBJECT_TYPE, BASE_DATA_OBJECT_TYPE);
|
||||
DataCollection da = SessionManager.getSession().retrieve(
|
||||
BASE_DATA_OBJECT_TYPE);
|
||||
//da.addEqualsFilter(VersionedACSObject.IS_DELETED, new Integer(0));
|
||||
//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);
|
||||
}
|
||||
|
||||
|
|
@ -240,15 +245,14 @@ public class ReusableImageAsset extends ImageAsset {
|
|||
* @return a collection of images whose name matches the keyword
|
||||
*/
|
||||
public static ImageAssetCollection getReusableImagesByKeyword(
|
||||
String keyword, String context
|
||||
) {
|
||||
String keyword, String context) {
|
||||
ImageAssetCollection c = getAllReusableImages();
|
||||
c.addOrder(Asset.NAME);
|
||||
Filter f;
|
||||
if(!(keyword == null || keyword.length() < 1)) {
|
||||
f = c.addFilter("lower(name) like lower(\'%\' || :keyword || \'%\')");
|
||||
f.set("keyword", keyword);
|
||||
}
|
||||
if (!(keyword == null || keyword.length() < 1)) {
|
||||
f = c.addFilter("lower(name) like lower(\'%\' || :keyword || \'%\')");
|
||||
f.set("keyword", keyword);
|
||||
}
|
||||
f = c.addFilter("version = :version");
|
||||
f.set("version", context);
|
||||
return c;
|
||||
|
|
@ -263,6 +267,4 @@ public class ReusableImageAsset extends ImageAsset {
|
|||
public static ImageAssetCollection getReusableImagesByKeyword(String keyword) {
|
||||
return getReusableImagesByKeyword(keyword, ContentItem.DRAFT);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,16 +39,14 @@ import com.arsdigita.util.LockableImpl;
|
|||
* @version $Id: DefaultImageBrowserModelBuilder.java 1940 2009-05-29 07:15:05Z terry $
|
||||
*/
|
||||
public class DefaultImageBrowserModelBuilder extends LockableImpl
|
||||
implements ImageBrowserModelBuilder, PaginationModelBuilder {
|
||||
implements ImageBrowserModelBuilder, PaginationModelBuilder {
|
||||
|
||||
private SingleSelectionModel m_keywordModel;
|
||||
private static ImageBrowserModel EMPTY_MODEL =
|
||||
new EmptyImageBrowserModel();
|
||||
|
||||
new EmptyImageBrowserModel();
|
||||
private ImageBrowser m_imageBrowser;
|
||||
private RequestLocal m_size;
|
||||
private RequestLocal m_imageColl;
|
||||
|
||||
private String m_context;
|
||||
|
||||
/**
|
||||
|
|
@ -60,13 +58,12 @@ public class DefaultImageBrowserModelBuilder extends LockableImpl
|
|||
* {@link ContentItem#DRAFT} or {@link ContentItem#LIVE}
|
||||
*/
|
||||
public DefaultImageBrowserModelBuilder(
|
||||
SingleSelectionModel keywordModel, String context
|
||||
) {
|
||||
SingleSelectionModel keywordModel, String context) {
|
||||
super();
|
||||
m_keywordModel = keywordModel;
|
||||
m_context = context;
|
||||
m_size = new RequestLocal();
|
||||
m_imageColl = new RequestLocal();
|
||||
m_size = new RequestLocal();
|
||||
m_imageColl = new RequestLocal();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -85,9 +82,10 @@ public class DefaultImageBrowserModelBuilder extends LockableImpl
|
|||
public ImageBrowserModel makeModel(ImageBrowser browser, PageState 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);
|
||||
return new DefaultImageBrowserModel((ImageAssetCollection) m_imageColl.get(s));
|
||||
return new DefaultImageBrowserModel((ImageAssetCollection) m_imageColl.
|
||||
get(s));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -108,31 +106,33 @@ public class DefaultImageBrowserModelBuilder extends LockableImpl
|
|||
|
||||
public int getTotalSize(Paginator paginator, PageState state) {
|
||||
|
||||
Integer size = (Integer) m_size.get(state);
|
||||
Integer size = (Integer) m_size.get(state);
|
||||
|
||||
if (size == null) {
|
||||
if (size == null) {
|
||||
|
||||
String key = (String)m_keywordModel.getSelectedKey(state);
|
||||
ImageAssetCollection c = ReusableImageAsset.getReusableImagesByKeyword(key, m_context);
|
||||
if (c == null) {
|
||||
return 0;
|
||||
}
|
||||
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());
|
||||
size = new Integer( (int) ReusableImageAsset.getReusableImagesByKeyword(key, m_context).size());
|
||||
|
||||
c.setRange(new Integer(paginator.getFirst(state)),
|
||||
new Integer(paginator.getLast(state) + 1));
|
||||
c.setRange(new Integer(paginator.getFirst(state)),
|
||||
new Integer(paginator.getLast(state) + 1));
|
||||
|
||||
m_size.set(state, size);
|
||||
m_imageColl.set(state, c);
|
||||
}
|
||||
m_size.set(state, size);
|
||||
m_imageColl.set(state, c);
|
||||
}
|
||||
|
||||
return size.intValue();
|
||||
return size.intValue();
|
||||
}
|
||||
|
||||
public void setImageBrowser(ImageBrowser ib) {
|
||||
m_imageBrowser = ib;
|
||||
m_imageBrowser = ib;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the paginator should be visible,
|
||||
* based on the visibility of the image browser itself.
|
||||
|
|
@ -141,7 +141,6 @@ public class DefaultImageBrowserModelBuilder extends LockableImpl
|
|||
* associated image browser is unknown.
|
||||
*/
|
||||
public boolean isVisible(PageState state) {
|
||||
return (m_imageBrowser != null)?m_imageBrowser.isVisible(state):true;
|
||||
return (m_imageBrowser != null) ? m_imageBrowser.isVisible(state) : true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue