Author: vjrj Date: 2008-10-15 16:12:54 +0200 (Wed, 15 Oct 2008) New Revision: 911 Added: trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileParams.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/ImageSize.java Removed: trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileConstants.java Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderPresenter.java trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderView.java trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui/DocumentReaderPanel.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileDownloadUtils.java trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileDownloadManager.java trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManager.java trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUtils.java trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java trunk/src/test/java/org/ourproject/kune/platf/server/manager/impl/FileUtilsTest.java Log: Incomplete - task Image thumbs/icons in client Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-10-15 14:12:54 UTC (rev 911) @@ -58,77 +58,84 @@ @Override public void onLoad() { - register(ToolGroup.class, new Factory<DocumentClientTool>(DocumentClientTool.class) { - public DocumentClientTool create() { - $(DocumentClientActions.class); - return new DocumentClientTool($(I18nUITranslationService.class), $(ToolSelector.class), - $(WsThemePresenter.class), $(WorkspaceSkeleton.class), $$(DocumentContext.class), - $$(ContentServiceAsync.class), $(ContentActionRegistry.class), - $(DragDropContentRegistry.class), $(ContentIconsRegistry.class)); - } - }); + register(ToolGroup.class, new Factory<DocumentClientTool>(DocumentClientTool.class) { + @Override + public DocumentClientTool create() { + $(DocumentClientActions.class); + return new DocumentClientTool($(I18nUITranslationService.class), $(ToolSelector.class), + $(WsThemePresenter.class), $(WorkspaceSkeleton.class), $$(DocumentContext.class), + $$(ContentServiceAsync.class), $(ContentActionRegistry.class), + $(DragDropContentRegistry.class), $(ContentIconsRegistry.class)); + } + }); - register(ToolGroup.class, new Factory<DocumentClientActions>(DocumentClientActions.class) { - public DocumentClientActions create() { - return new DocumentClientActions($(I18nUITranslationService.class), $(ContextNavigator.class), - $(Session.class), $(StateManager.class), $$(ContentServiceAsync.class), - $$(GroupServiceAsync.class), $$(FileUploader.class), $(ContentActionRegistry.class), - $(ContextActionRegistry.class), $$(FileDownloadUtils.class), $(EntityLogo.class), - $$(TextEditor.class), $(KuneErrorHandler.class), $(DocumentContent.class)); - } - }); + register(ToolGroup.class, new Factory<DocumentClientActions>(DocumentClientActions.class) { + @Override + public DocumentClientActions create() { + return new DocumentClientActions($(I18nUITranslationService.class), $(ContextNavigator.class), + $(Session.class), $(StateManager.class), $$(ContentServiceAsync.class), + $$(GroupServiceAsync.class), $$(FileUploader.class), $(ContentActionRegistry.class), + $(ContextActionRegistry.class), $$(FileDownloadUtils.class), $(EntityLogo.class), + $$(TextEditor.class), $(KuneErrorHandler.class), $(DocumentContent.class)); + } + }); - register(ToolGroup.class, new Factory<DocumentContent>(DocumentContent.class) { - public DocumentContent create() { - final ActionToolbarPanel<StateToken> contentNavigatorToolbar = new ActionToolbarPanel<StateToken>( - ActionToolbarPanel.Position.content, $$(ActionManager.class), $(WorkspaceSkeleton.class)); - final ActionToolbar<StateToken> toolbar = new ActionToolbarPresenter<StateToken>( - contentNavigatorToolbar); + register(ToolGroup.class, new Factory<DocumentContent>(DocumentContent.class) { + @Override + public DocumentContent create() { + final ActionToolbarPanel<StateToken> contentNavigatorToolbar = new ActionToolbarPanel<StateToken>( + ActionToolbarPanel.Position.content, $$(ActionManager.class), $(WorkspaceSkeleton.class)); + final ActionToolbar<StateToken> toolbar = new ActionToolbarPresenter<StateToken>( + contentNavigatorToolbar); - final DocumentContentPresenter presenter = new DocumentContentPresenter($(StateManager.class), - $(Session.class), $$(DocumentReader.class), $$(TextEditor.class), $$(FolderViewer.class), - toolbar, $(ContentActionRegistry.class)); - final DocumentContentPanel panel = new DocumentContentPanel($(WorkspaceSkeleton.class)); - presenter.init(panel); - return presenter; - } - }); + final DocumentContentPresenter presenter = new DocumentContentPresenter($(StateManager.class), + $(Session.class), $$(DocumentReader.class), $$(TextEditor.class), $$(FolderViewer.class), + toolbar, $(ContentActionRegistry.class)); + final DocumentContentPanel panel = new DocumentContentPanel($(WorkspaceSkeleton.class)); + presenter.init(panel); + return presenter; + } + }); - register(Singleton.class, new Factory<AdminContext>(AdminContext.class) { - public AdminContext create() { - final AdminContextPresenter presenter = new AdminContextPresenter($(Session.class), - $(StateManager.class), $$(TagsSummary.class), $$(ContentServiceAsync.class), - $(EntityTitle.class), $(EntitySubTitle.class)); - final AdminContextView view = new AdminContextPanel(presenter, $(I18nUITranslationService.class)); - presenter.init(view); - return presenter; - } - }); + register(Singleton.class, new Factory<AdminContext>(AdminContext.class) { + @Override + public AdminContext create() { + final AdminContextPresenter presenter = new AdminContextPresenter($(Session.class), + $(StateManager.class), $$(TagsSummary.class), $$(ContentServiceAsync.class), + $(EntityTitle.class), $(EntitySubTitle.class)); + final AdminContextView view = new AdminContextPanel(presenter, $(I18nUITranslationService.class)); + presenter.init(view); + return presenter; + } + }); - register(ToolGroup.class, new Factory<DocumentContext>(DocumentContext.class) { - public DocumentContext create() { - final DocumentContextPresenter presenter = new DocumentContextPresenter($(StateManager.class), - $$(ContextNavigator.class), $$(AdminContext.class)); - final DocumentContextPanel panel = new DocumentContextPanel($(WorkspaceSkeleton.class)); - presenter.init(panel); - return presenter; - } - }); + register(ToolGroup.class, new Factory<DocumentContext>(DocumentContext.class) { + @Override + public DocumentContext create() { + final DocumentContextPresenter presenter = new DocumentContextPresenter($(StateManager.class), + $$(ContextNavigator.class), $$(AdminContext.class)); + final DocumentContextPanel panel = new DocumentContextPanel($(WorkspaceSkeleton.class)); + presenter.init(panel); + return presenter; + } + }); - register(Singleton.class, new Factory<DocumentReader>(DocumentReader.class) { - public DocumentReader create() { - final DocumentReaderView view = new DocumentReaderPanel($(WorkspaceSkeleton.class)); - final DocumentReaderPresenter presenter = new DocumentReaderPresenter($(Session.class), view); - return presenter; - } - }); + register(Singleton.class, new Factory<DocumentReader>(DocumentReader.class) { + @Override + public DocumentReader create() { + final DocumentReaderView view = new DocumentReaderPanel($(WorkspaceSkeleton.class)); + final DocumentReaderPresenter presenter = new DocumentReaderPresenter(view, $$(FileDownloadUtils.class)); + return presenter; + } + }); - register(Singleton.class, new Factory<FolderViewer>(FolderViewer.class) { - public FolderViewer create() { - final FolderViewerView view = new FolderViewerPanel(); - final FolderViewerPresenter presenter = new FolderViewerPresenter(view); - return presenter; - } - }); + register(Singleton.class, new Factory<FolderViewer>(FolderViewer.class) { + @Override + public FolderViewer create() { + final FolderViewerView view = new FolderViewerPanel(); + final FolderViewerPresenter presenter = new FolderViewerPresenter(view); + return presenter; + } + }); } } Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderPresenter.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderPresenter.java 2008-10-15 14:12:54 UTC (rev 911) @@ -24,15 +24,18 @@ import org.ourproject.kune.platf.client.View; import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO; import org.ourproject.kune.platf.client.dto.StateToken; -import org.ourproject.kune.platf.client.state.Session; +import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils; +import org.ourproject.kune.platf.client.ui.download.ImageSize; +import com.calclab.suco.client.ioc.Provider; + public class DocumentReaderPresenter implements DocumentReader { private final DocumentReaderView view; - private final Session session; + private final Provider<FileDownloadUtils> downloadProvider; - public DocumentReaderPresenter(final Session session, final DocumentReaderView view) { - this.session = session; + public DocumentReaderPresenter(final DocumentReaderView view, final Provider<FileDownloadUtils> downloadProvider) { this.view = view; + this.downloadProvider = downloadProvider; } public View getView() { @@ -43,10 +46,10 @@ final BasicMimeTypeDTO mimeType) { if (typeId.equals(DocumentClientTool.TYPE_UPLOADEDFILE)) { if (mimeType != null) { - final String url = "/kune/servlets/FileDownloadManager?token=" + token + "&hash=" - + session.getUserHash(); + FileDownloadUtils fileDownloadUtils = downloadProvider.get(); if (mimeType.getType().equals("image")) { - view.setContent("<img src=\"" + url + "\">"); + view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token, + ImageSize.sized)); } else if (mimeType.toString().equals("text/plain") || mimeType.toString().equals("application/pdf")) { view.setContent(text); } else { Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderView.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderView.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderView.java 2008-10-15 14:12:54 UTC (rev 911) @@ -26,4 +26,6 @@ public void setContent(String content); + public void showImage(String imageUrl, String imageResizedUrl); + } Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui/DocumentReaderPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui/DocumentReaderPanel.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui/DocumentReaderPanel.java 2008-10-15 14:12:54 UTC (rev 911) @@ -23,20 +23,47 @@ import org.ourproject.kune.docs.client.cnt.reader.DocumentReaderView; import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; +import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.Widget; public class DocumentReaderPanel implements DocumentReaderView { private final WorkspaceSkeleton ws; public DocumentReaderPanel(final WorkspaceSkeleton ws) { - this.ws = ws; + this.ws = ws; } public void setContent(final String content) { - final HTML html = new HTML(content); - html.setStyleName("kune-Content-Main"); - html.addStyleName("kune-Margin-7-trbl"); - ws.getEntityWorkspace().setContent(html); + final HTML html = new HTML(content); + setDefStyle(html); + ws.getEntityWorkspace().setContent(html); } + + public void showImage(String imageUrl, String imageResizedUrl) { + final Image imgOrig = new Image(imageUrl); + final Image imgResized = new Image(imageResizedUrl); + setDefStyle(imgOrig); + setDefStyle(imgResized); + imgOrig.addStyleName("kune-pointer"); + imgResized.addStyleName("kune-pointer"); + imgResized.addClickListener(new ClickListener() { + public void onClick(Widget sender) { + ws.getEntityWorkspace().setContent(imgOrig); + } + }); + imgOrig.addClickListener(new ClickListener() { + public void onClick(Widget sender) { + ws.getEntityWorkspace().setContent(imgResized); + } + }); + ws.getEntityWorkspace().setContent(imgResized); + } + + private void setDefStyle(final Widget widget) { + widget.setStyleName("kune-Content-Main"); + widget.addStyleName("kune-Margin-7-trbl"); + } } Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileConstants.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileConstants.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileConstants.java 2008-10-15 14:12:54 UTC (rev 911) @@ -1,7 +0,0 @@ -package org.ourproject.kune.platf.client.ui.download; - -public interface FileConstants { - final String ICON_SUFFIX = ".ico."; - final String SIZED_SUFFIX = ".sized."; - final String THUMB_SUFFIX = ".thumb."; -} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileDownloadUtils.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileDownloadUtils.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileDownloadUtils.java 2008-10-15 14:12:54 UTC (rev 911) @@ -13,22 +13,26 @@ private final Session session; public FileDownloadUtils(final Session session) { - this.session = session; + this.session = session; } public void downloadFile(final StateToken token) { - final String url = calculateUrl(token, true); - DOM.setElementAttribute(RootPanel.get("__download").getElement(), "src", url); + final String url = calculateUrl(token, true); + DOM.setElementAttribute(RootPanel.get("__download").getElement(), "src", url); } + public String getImageResizedUrl(final StateToken token, ImageSize imageSize) { + return calculateUrl(token, false) + "&" + FileParams.IMGSIZE + "=" + imageSize; + } + public String getImageUrl(final StateToken token) { - return calculateUrl(token, false); + return calculateUrl(token, false); } private String calculateUrl(final StateToken token, final boolean download) { - final String url = DOWNLOADSERVLET + "?token=" + token + "&hash=" + session.getUserHash() + "&download=" - + (download ? "true" : "false"); - return url; + final String url = DOWNLOADSERVLET + "?" + FileParams.TOKEN + "=" + token + "&" + FileParams.HASH + "=" + + session.getUserHash() + "&" + FileParams.DOWNLOAD + "=" + (download ? "true" : "false"); + return url; } } Copied: trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileParams.java (from rev 910, trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileConstants.java) =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileConstants.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileParams.java 2008-10-15 14:12:54 UTC (rev 911) @@ -0,0 +1,8 @@ +package org.ourproject.kune.platf.client.ui.download; + +public interface FileParams { + final String HASH = "hash"; + final String TOKEN = "token"; + final String DOWNLOAD = "download"; + final String IMGSIZE = "imgsize"; +} Property changes on: trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileParams.java ___________________________________________________________________ Name: svn:mergeinfo + Added: trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/ImageSize.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/ImageSize.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/ImageSize.java 2008-10-15 14:12:54 UTC (rev 911) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.client.ui.download; + +public enum ImageSize { + sized, thumb, ico +} \ No newline at end of file Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileDownloadManager.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileDownloadManager.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileDownloadManager.java 2008-10-15 14:12:54 UTC (rev 911) @@ -15,6 +15,8 @@ import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.errors.ContentNotFoundException; +import org.ourproject.kune.platf.client.ui.download.FileParams; +import org.ourproject.kune.platf.client.ui.download.ImageSize; import org.ourproject.kune.platf.server.access.AccessRol; import org.ourproject.kune.platf.server.auth.ActionLevel; import org.ourproject.kune.platf.server.auth.Authenticated; @@ -42,67 +44,78 @@ KuneProperties kuneProperties; public void returnFile(final String filename, final OutputStream out) throws FileNotFoundException, IOException { - InputStream in = null; - try { - in = new BufferedInputStream(new FileInputStream(filename)); - final byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } finally { - if (in != null) { - in.close(); - } - } + InputStream in = null; + try { + in = new BufferedInputStream(new FileInputStream(filename)); + final byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } finally { + if (in != null) { + in.close(); + } + } } @Override protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, - IOException { + IOException { - final String userHash = req.getParameter("hash"); - final StateToken stateToken = new StateToken(req.getParameter("token")); - final String downloadS = req.getParameter("download"); - final boolean download = downloadS != null && downloadS.equals("true") ? true : false; - final Content cnt = getContentForDownload(userHash, stateToken); + final String userHash = req.getParameter(FileParams.HASH); + final StateToken stateToken = new StateToken(req.getParameter(FileParams.TOKEN)); + final String downloadS = req.getParameter(FileParams.DOWNLOAD); + String imageSizeS = req.getParameter(FileParams.IMGSIZE); + final ImageSize imgsize = imageSizeS == null ? null : ImageSize.valueOf(imageSizeS); + final boolean download = downloadS != null && downloadS.equals("true") ? true : false; - final String absDir = kuneProperties.get(KuneProperties.UPLOAD_LOCATION) + FileUtils.toDir(stateToken); - final String filename = cnt.getFilename(); - final String absFilename = absDir + filename; + final Content cnt = getContentForDownload(userHash, stateToken); - doBuildResp(resp, absFilename, cnt.getTitle(), cnt.getMimeType(), FileUtils - .getFileNameExtension(filename, true), download); + final String absDir = kuneProperties.get(KuneProperties.UPLOAD_LOCATION) + FileUtils.toDir(stateToken); + String filename = cnt.getFilename(); + String extension = FileUtils.getFileNameExtension(filename, true); + BasicMimeType mimeType = cnt.getMimeType(); + + if (mimeType.getType().equals("image")) { + String imgsizePrefix = imgsize == null ? "" : "." + imgsize; + String filenameWithoutExtension = FileUtils.getFileNameWithoutExtension(filename, extension); + filename = filenameWithoutExtension + imgsizePrefix + extension; + } + + final String absFilename = absDir + filename; + + doBuildResp(resp, absFilename, cnt.getTitle(), mimeType, extension, download); } private void doBuildResp(final HttpServletResponse resp, final String filename, final String otherName, - final BasicMimeType mimeType, final String extension, final boolean download) throws FileNotFoundException, - IOException { - final File file = new File(filename); + final BasicMimeType mimeType, final String extension, final boolean download) throws FileNotFoundException, + IOException { + final File file = new File(filename); - resp.setContentLength((int) file.length()); - if (mimeType == null || download) { - resp.setContentType("application/x-download"); - } else if (mimeType.getType().equals("image") || mimeType.toString().equals("text/plain")) { - resp.setContentType(mimeType.toString()); - } else { - resp.setContentType("application/x-download"); - } - resp.setHeader("Content-Disposition", "attachment; filename=\"" + otherName + extension + "\""); + resp.setContentLength((int) file.length()); + if (mimeType == null || download) { + resp.setContentType("application/x-download"); + } else if (mimeType.getType().equals("image")) { + resp.setContentType(mimeType.toString()); + } else { + resp.setContentType("application/x-download"); + } + resp.setHeader("Content-Disposition", "attachment; filename=\"" + otherName + extension + "\""); - final OutputStream out = resp.getOutputStream(); - returnFile(filename, out); + final OutputStream out = resp.getOutputStream(); + returnFile(filename, out); } @Authenticated(mandatory = false) @Authorizated(accessRolRequired = AccessRol.Viewer, actionLevel = ActionLevel.content) private Content getContentForDownload(final String userHash, final StateToken stateToken) throws ServletException { - try { - return contentManager.find(ContentUtils.parseId(stateToken.getDocument())); - } catch (final ContentNotFoundException e) { - // what response to send in this case ? - throw new ServletException(); - } + try { + return contentManager.find(ContentUtils.parseId(stateToken.getDocument())); + } catch (final ContentNotFoundException e) { + // what response to send in this case ? + throw new ServletException(); + } } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManager.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManager.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUploadManager.java 2008-10-15 14:12:54 UTC (rev 911) @@ -24,7 +24,7 @@ import org.ourproject.kune.docs.server.DocumentServerTool; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.services.I18nTranslationService; -import org.ourproject.kune.platf.client.ui.download.FileConstants; +import org.ourproject.kune.platf.client.ui.download.ImageSize; import org.ourproject.kune.platf.client.ui.upload.FileUploader; import org.ourproject.kune.platf.server.UserSession; import org.ourproject.kune.platf.server.access.AccessRol; @@ -70,7 +70,7 @@ @Override @SuppressWarnings( { "unchecked", "deprecation" }) - protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, + protected void doPost(final HttpServletRequest req, final HttpServletResponse response) throws ServletException, IOException { JSONObject jsonResponse = createSuccessResponse(); @@ -122,10 +122,13 @@ e.printStackTrace(); } - final Writer w = new OutputStreamWriter(resp.getOutputStream()); + final Writer w = new OutputStreamWriter(response.getOutputStream()); + response.setCharacterEncoding("utf-8"); + response.setContentType("text/html"); + // response.setContentType("text/json"); w.write(jsonResponse.toString()); w.close(); - resp.setStatus(HttpServletResponse.SC_OK); + response.setStatus(HttpServletResponse.SC_OK); } @Authenticated @@ -205,9 +208,9 @@ String fileOrig = absDir + filename; String withoutExtension = FileUtils.getFileNameWithoutExtension(filename, extension); - String resizeName = absDir + withoutExtension + FileConstants.SIZED_SUFFIX + extension; - String thumbName = absDir + withoutExtension + FileConstants.THUMB_SUFFIX + extension; - String iconName = absDir + withoutExtension + FileConstants.ICON_SUFFIX + extension; + String resizeName = absDir + withoutExtension + "." + ImageSize.sized + "." + extension; + String thumbName = absDir + withoutExtension + "." + ImageSize.thumb + "." + extension; + String iconName = absDir + withoutExtension + "." + ImageSize.ico + "." + extension; int resizeWidth = Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_RESIZEWIDTH)); int thumbSize = Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_THUMBSIZE)); Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUtils.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUtils.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/FileUtils.java 2008-10-15 14:12:54 UTC (rev 911) @@ -16,59 +16,60 @@ * @return */ public static String getFileNameExtension(final String filename, final boolean withDot) { - // also we can use FilenameUtils - if (filename == null) { - return ""; - } - final int dotIndex = filename.lastIndexOf("."); - if (dotIndex == -1 || dotIndex == 0) { - return ""; - } else { - if (withDot) { - final String ext = filename.substring(dotIndex); - return ext.length() == 1 ? "" : ext; - } else { - return filename.substring(dotIndex + 1); - } - } + // also we can use FilenameUtils + if (filename == null) { + return ""; + } + final int dotIndex = filename.lastIndexOf("."); + if (dotIndex == -1 || dotIndex == 0) { + return ""; + } else { + if (withDot) { + final String ext = filename.substring(dotIndex); + return ext.length() == 1 ? "" : ext; + } else { + return filename.substring(dotIndex + 1); + } + } } public static String getFileNameWithoutExtension(final String fileName, final String extension) { - final int extlength = extension.length(); - if (extlength > 0) { - return fileName.substring(0, fileName.length() - extlength - 1); - } else { - return fileName; - } + final int extlength = extension.length(); + if (extlength > 0) { + boolean withDot = extension.charAt(0) == '.'; + return fileName.substring(0, fileName.length() - extlength - (withDot ? 0 : 1)); + } else { + return fileName; + } } public static String getNextSequentialFileName(final String fileName) { - final int lastSpace = fileName.lastIndexOf(" "); - if (lastSpace != -1) { - final String suffix = fileName.substring(lastSpace + 1); - try { - final Integer i = new Integer(suffix); - return fileName.substring(0, lastSpace + 1) + (i + 1); - } catch (final NumberFormatException e) { - } - } - return fileName + " 1"; + final int lastSpace = fileName.lastIndexOf(" "); + if (lastSpace != -1) { + final String suffix = fileName.substring(lastSpace + 1); + try { + final Integer i = new Integer(suffix); + return fileName.substring(0, lastSpace + 1) + (i + 1); + } catch (final NumberFormatException e) { + } + } + return fileName + " 1"; } public static String getNextSequentialFileName(final String fileName, boolean preserveExtension) { - if (!preserveExtension) { - return getNextSequentialFileName(fileName); - } - final int dotIndex = fileName.lastIndexOf("."); - if (dotIndex == -1 || dotIndex == 0) { - return getNextSequentialFileName(fileName); - } else { - final String ext = fileName.substring(dotIndex); - return getNextSequentialFileName(fileName.substring(0, dotIndex)) + ext; - } + if (!preserveExtension) { + return getNextSequentialFileName(fileName); + } + final int dotIndex = fileName.lastIndexOf("."); + if (dotIndex == -1 || dotIndex == 0) { + return getNextSequentialFileName(fileName); + } else { + final String ext = fileName.substring(dotIndex); + return getNextSequentialFileName(fileName.substring(0, dotIndex)) + ext; + } } public static String toDir(final StateToken stateToken) { - return SLASH + stateToken.getGroup() + SLASH + stateToken.getTool() + SLASH + stateToken.getFolder() + SLASH; + return SLASH + stateToken.getGroup() + SLASH + stateToken.getTool() + SLASH + stateToken.getFolder() + SLASH; } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java 2008-10-15 14:12:54 UTC (rev 911) @@ -42,59 +42,59 @@ public class EntityLogoPanel extends SimplePanel implements EntityLogoView { class EntityTextLogo extends VerticalPanel { - private static final int GROUP_NAME_LIMIT_SIZE = 90; - private static final String LOGO_SMALL_FONT_SIZE = "108%"; - private static final String LOGO_DEFAULT_FONT_SIZE = "167%"; - private final Label defTextLogoLabel; - private final Hyperlink defTextPutYourLogoHL; - private final HorizontalPanel putYourLogoHP; + private static final int GROUP_NAME_LIMIT_SIZE = 90; + private static final String LOGO_SMALL_FONT_SIZE = "108%"; + private static final String LOGO_DEFAULT_FONT_SIZE = "167%"; + private final Label defTextLogoLabel; + private final Hyperlink defTextPutYourLogoHL; + private final HorizontalPanel putYourLogoHP; - public EntityTextLogo() { - // Initialize - super(); - defTextLogoLabel = new Label(); - final HTML expandCell = new HTML("<b></b>"); - putYourLogoHP = new HorizontalPanel(); - defTextPutYourLogoHL = new Hyperlink(); + public EntityTextLogo() { + // Initialize + super(); + defTextLogoLabel = new Label(); + final HTML expandCell = new HTML("<b></b>"); + putYourLogoHP = new HorizontalPanel(); + defTextPutYourLogoHL = new Hyperlink(); - // Layout - add(defTextLogoLabel); - add(putYourLogoHP); - putYourLogoHP.add(expandCell); - putYourLogoHP.add(defTextPutYourLogoHL); + // Layout + add(defTextLogoLabel); + add(putYourLogoHP); + putYourLogoHP.add(expandCell); + putYourLogoHP.add(defTextPutYourLogoHL); - // Set properties - defTextPutYourLogoHL.setText(i18n.t("Put Your Logo Here")); - defTextPutYourLogoHL.addClickListener(new ClickListener() { - public void onClick(final Widget sender) { - final InfoDialog infoDialog = new InfoDialog( - "Configure your group logo", - "Howto configure your group logo", - "For configure your group's logo just add an image to your group contents and select it as your group's logo (see menu 'File'). Whe are working into a more direct way to do that.", - i18n.t("Ok"), false, false, 300, 200); - infoDialog.show(); - } - }); - expandCell.setWidth("100%"); - putYourLogoHP.setCellWidth(expandCell, "100%"); - // TODO: link to configure the logo - setStylePrimaryName("k-entitytextlogo"); - setDefaultText(""); - } + // Set properties + defTextPutYourLogoHL.setText(i18n.t("Put Your Logo Here")); + defTextPutYourLogoHL.addClickListener(new ClickListener() { + public void onClick(final Widget sender) { + final InfoDialog infoDialog = new InfoDialog( + "Configure your group logo", + "Howto configure your group logo", + "For configure your group's logo just add an image to your group contents and select it as your group's logo (see menu 'File'). Whe are working into a more direct way to do that.", + i18n.t("Ok"), false, false, 300, 200); + infoDialog.show(); + } + }); + expandCell.setWidth("100%"); + putYourLogoHP.setCellWidth(expandCell, "100%"); + // TODO: link to configure the logo + setStylePrimaryName("k-entitytextlogo"); + setDefaultText(""); + } - public void setDefaultText(final String text) { - if (text.length() > GROUP_NAME_LIMIT_SIZE) { - DOM.setStyleAttribute(defTextLogoLabel.getElement(), "fontSize", LOGO_SMALL_FONT_SIZE); - } else { - DOM.setStyleAttribute(defTextLogoLabel.getElement(), "fontSize", LOGO_DEFAULT_FONT_SIZE); - } - defTextLogoLabel.setText(text); + public void setDefaultText(final String text) { + if (text.length() > GROUP_NAME_LIMIT_SIZE) { + DOM.setStyleAttribute(defTextLogoLabel.getElement(), "fontSize", LOGO_SMALL_FONT_SIZE); + } else { + DOM.setStyleAttribute(defTextLogoLabel.getElement(), "fontSize", LOGO_DEFAULT_FONT_SIZE); + } + defTextLogoLabel.setText(text); - } + } - public void setPutYourLogoVisible(final boolean visible) { - putYourLogoHP.setVisible(visible); - } + public void setPutYourLogoVisible(final boolean visible) { + putYourLogoHP.setVisible(visible); + } } @@ -103,52 +103,52 @@ private EntityTextLogo entityTextLogo; private final I18nTranslationService i18n; - private final Provider<FileDownloadUtils> dowloadProvider; + private final Provider<FileDownloadUtils> downloadProvider; public EntityLogoPanel(final I18nTranslationService i18n, final WorkspaceSkeleton ws, - final Provider<FileDownloadUtils> dowloadProvider) { - this.i18n = i18n; - this.dowloadProvider = dowloadProvider; - ws.addToEntityMainHeader(this); + final Provider<FileDownloadUtils> dowloadProvider) { + this.i18n = i18n; + this.downloadProvider = dowloadProvider; + ws.addToEntityMainHeader(this); } public void setLogo(final StateToken stateToken, final boolean clipped) { - clear(); - final String imageUrl = dowloadProvider.get().getImageUrl(stateToken); - Image logo; - if (clipped) { - logo = new Image(imageUrl, 0, 0, LOGO_ICON_DEFAULT_WIDTH, LOGO_ICON_DEFAULT_HEIGHT); - } else { + clear(); + final String imageUrl = downloadProvider.get().getImageUrl(stateToken); + Image logo; + if (clipped) { + logo = new Image(imageUrl, 0, 0, LOGO_ICON_DEFAULT_WIDTH, LOGO_ICON_DEFAULT_HEIGHT); + } else { - logo = new Image(imageUrl); - logo.setWidth("" + LOGO_ICON_DEFAULT_WIDTH); - logo.setHeight("" + LOGO_ICON_DEFAULT_HEIGHT); - } - add(logo); + logo = new Image(imageUrl); + logo.setWidth("" + LOGO_ICON_DEFAULT_WIDTH); + logo.setHeight("" + LOGO_ICON_DEFAULT_HEIGHT); + } + add(logo); } public void setLogo(final String groupName) { - clear(); - add(getEntityTextLogo()); - entityTextLogo.setDefaultText(groupName); + clear(); + add(getEntityTextLogo()); + entityTextLogo.setDefaultText(groupName); } public void setPutYourLogoVisible(final boolean visible) { - getEntityTextLogo().setPutYourLogoVisible(visible); + getEntityTextLogo().setPutYourLogoVisible(visible); } public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) { - if (oldTheme != null) { - getEntityTextLogo().removeStyleDependentName(oldTheme.toString()); - } - getEntityTextLogo().addStyleDependentName(newTheme.toString()); + if (oldTheme != null) { + getEntityTextLogo().removeStyleDependentName(oldTheme.toString()); + } + getEntityTextLogo().addStyleDependentName(newTheme.toString()); } private EntityTextLogo getEntityTextLogo() { - if (entityTextLogo == null) { - this.entityTextLogo = new EntityTextLogo(); - } - return entityTextLogo; + if (entityTextLogo == null) { + this.entityTextLogo = new EntityTextLogo(); + } + return entityTextLogo; } } Modified: trunk/src/test/java/org/ourproject/kune/platf/server/manager/impl/FileUtilsTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/server/manager/impl/FileUtilsTest.java 2008-10-15 03:14:33 UTC (rev 910) +++ trunk/src/test/java/org/ourproject/kune/platf/server/manager/impl/FileUtilsTest.java 2008-10-15 14:12:54 UTC (rev 911) @@ -11,88 +11,98 @@ @Test public void dotFileRetSeq1() { - assertEquals("." + SIMPLE_FILE_NAME + " 1", FileUtils.getNextSequentialFileName("." + SIMPLE_FILE_NAME, true)); + assertEquals("." + SIMPLE_FILE_NAME + " 1", FileUtils.getNextSequentialFileName("." + SIMPLE_FILE_NAME, true)); } @Test public void dotFileRetSeq1IgnoreExt() { - assertEquals("." + SIMPLE_FILE_NAME + " 1", FileUtils.getNextSequentialFileName("." + SIMPLE_FILE_NAME, false)); + assertEquals("." + SIMPLE_FILE_NAME + " 1", FileUtils.getNextSequentialFileName("." + SIMPLE_FILE_NAME, false)); } @Test public void getExtensionBasic() { - assertEquals("someext", FileUtils.getFileNameExtension("file.name.with.someext", false)); + assertEquals("someext", FileUtils.getFileNameExtension("file.name.with.someext", false)); } @Test public void getExtensionWithDot() { - assertEquals("", FileUtils.getFileNameExtension("file name with no ext.", false)); + assertEquals("", FileUtils.getFileNameExtension("file name with no ext.", false)); } @Test public void getExtensionWithDotBasic() { - assertEquals(".someext", FileUtils.getFileNameExtension("file.name.with.someext", true)); + assertEquals(".someext", FileUtils.getFileNameExtension("file.name.with.someext", true)); } @Test public void getExtensionWithDotWithFinalDot() { - assertEquals("", FileUtils.getFileNameExtension("file name with no ext.", true)); + assertEquals("", FileUtils.getFileNameExtension("file name with no ext.", true)); } @Test public void getExtensionWithDotWithInitialDot() { - assertEquals("", FileUtils.getFileNameExtension(".file name with no ext", true)); + assertEquals("", FileUtils.getFileNameExtension(".file name with no ext", true)); } @Test public void getExtensionWithInitialDot() { - assertEquals("", FileUtils.getFileNameExtension(".file name with no ext", false)); + assertEquals("", FileUtils.getFileNameExtension(".file name with no ext", false)); } @Test public void testFileNameWExtensionSimple() { - assertEquals("test", FileUtils.getFileNameWithoutExtension("test.txt", "txt")); + assertEquals("test", FileUtils.getFileNameWithoutExtension("test.txt", "txt")); } @Test + public void testFileNameWExtensionSimpleWithDot() { + assertEquals("test", FileUtils.getFileNameWithoutExtension("test.txt", ".txt")); + } + + @Test public void testFileNameWithoutExtension() { - assertEquals("test", FileUtils.getFileNameWithoutExtension("test", "")); + assertEquals("test", FileUtils.getFileNameWithoutExtension("test", "")); } @Test + public void testFileNameWNoExtensionWithDot() { + assertEquals("test.", FileUtils.getFileNameWithoutExtension("test.", "")); + } + + @Test public void testGetFilenameExtNull() { - assertEquals("", FileUtils.getFileNameExtension(null, true)); + assertEquals("", FileUtils.getFileNameExtension(null, true)); } @Test public void testIfSeq101return102() { - assertEquals(SIMPLE_FILE_NAME + " 102", FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + " 101")); + assertEquals(SIMPLE_FILE_NAME + " 102", FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + " 101")); } @Test public void testIfSeq1return2() { - assertEquals(SIMPLE_FILE_NAME + " 2", FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + " 1")); + assertEquals(SIMPLE_FILE_NAME + " 2", FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + " 1")); } @Test public void testIfSeq1WithExtreturn2WithExt() { - assertEquals(SIMPLE_FILE_NAME + " 2" + EXT, FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + " 1" + EXT, - true)); + assertEquals(SIMPLE_FILE_NAME + " 2" + EXT, FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + " 1" + EXT, + true)); } @Test public void testNoSeqReturn1() { - assertEquals(SIMPLE_FILE_NAME + " 1", FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME)); + assertEquals(SIMPLE_FILE_NAME + " 1", FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME)); } @Test public void testNoSeqWithExtNotTakedIntoAccountReturn1() { - assertEquals(SIMPLE_FILE_NAME + EXT + " 1", FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + EXT, false)); + assertEquals(SIMPLE_FILE_NAME + EXT + " 1", FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + EXT, false)); } @Test public void testNoSeqWithExtReturn1WithExt() { - assertEquals(SIMPLE_FILE_NAME + " 1" + EXT, FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + EXT, true)); + assertEquals(SIMPLE_FILE_NAME + " 1" + EXT, FileUtils.getNextSequentialFileName(SIMPLE_FILE_NAME + EXT, true)); } }