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 {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue