diff --git a/source/java/org/alfresco/repo/content/transform/PdfToImageContentTransformer.java b/source/java/org/alfresco/repo/content/transform/PdfToImageContentTransformer.java index 8c172c04f6..62c0ea756e 100644 --- a/source/java/org/alfresco/repo/content/transform/PdfToImageContentTransformer.java +++ b/source/java/org/alfresco/repo/content/transform/PdfToImageContentTransformer.java @@ -41,18 +41,21 @@ import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.TransformationOptions; import org.alfresco.util.TempFileProvider; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import com.sun.pdfview.PDFFile; import com.sun.pdfview.PDFPage; /** - * Makes use of the {@link http://www.pdfbox.org/ PDFBox} library to + * Makes use of the {@link https://pdf-renderer.dev.java.net/ PDFRenderer} library to * perform conversions from PDF files to images. * * @author Roy Wetherall */ public class PdfToImageContentTransformer extends AbstractContentTransformer2 { + private static final Log logger = LogFactory.getLog(PdfToImageContentTransformer.class); /** * Currently the only transformation performed is that of text extraction from PDF documents. */ @@ -87,6 +90,18 @@ public class PdfToImageContentTransformer extends AbstractContentTransformer2 ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()); PDFFile pdffile = new PDFFile(buf); + + // Log the PDF version of the file being transformed. + if (logger.isInfoEnabled()) + { + int pdfMajorVersion = pdffile.getMajorVersion(); + int pdfMinorVersion = pdffile.getMinorVersion(); + StringBuilder msg = new StringBuilder(); + msg.append("File being transformed is of pdf version ") + .append(pdfMajorVersion).append(".").append(pdfMinorVersion); + logger.info(msg.toString()); + } + PDFPage page = pdffile.getPage(0); //get the width and height for the doc at the default zoom diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index 1710c3dab2..ebe7532d6a 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -268,7 +268,17 @@ public class SiteServiceImpl implements SiteService, SiteModel { this.retryingTransactionHelper = retryingTransactionHelper; } - + + public void setRoleComparator(Comparator roleComparator) + { + this.roleComparator = roleComparator; + } + + public Comparator getRoleComparator() + { + return roleComparator; + } + /** * Checks that all necessary properties and services have been provided. */ @@ -290,11 +300,11 @@ public class SiteServiceImpl implements SiteService, SiteModel /** * @see org.alfresco.service.cmr.site.SiteService#createSite(java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean) */ - public SiteInfo createSite( final String sitePreset, - String passedShortName, - final String title, - final String description, - final boolean isPublic) + public SiteInfo createSite(final String sitePreset, + String passedShortName, + final String title, + final String description, + final boolean isPublic) { // Determine the site visibility SiteVisibility visibility = SiteVisibility.PRIVATE; @@ -357,8 +367,6 @@ public class SiteServiceImpl implements SiteService, SiteModel // Get the current user final String currentUser = authenticationContext.getCurrentUserName(); - - // Create the relevant groups and assign permissions AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork() { @@ -395,8 +403,7 @@ public class SiteServiceImpl implements SiteService, SiteModel } else if (SiteVisibility.MODERATED.equals(visibility) == true) { - permissionService.setPermission(siteNodeRef, PermissionService.ALL_AUTHORITIES, SITE_CONSUMER, true); - //permissionService.setPermission(siteNodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.READ_PROPERTIES, true); + permissionService.setPermission(siteNodeRef, PermissionService.ALL_AUTHORITIES, SITE_CONSUMER, true); } permissionService.setPermission(siteNodeRef, PermissionService.ALL_AUTHORITIES, @@ -1147,9 +1154,9 @@ public class SiteServiceImpl implements SiteService, SiteModel { String result = null; List roles = getMembersRoles(shortName, authorityName); - if (roles.isEmpty() == false) + if (roles.size() != 0) { - if(roleComparator != null) + if (roles.size() > 1 && roleComparator != null) { // Need to sort the roles into the most important first. SortedSet sortedRoles = new TreeSet(roleComparator); @@ -1161,10 +1168,9 @@ public class SiteServiceImpl implements SiteService, SiteModel } else { - // don't search on precedence + // don't search on precedence or only one result result = roles.get(0); } - } return result; } @@ -1210,9 +1216,9 @@ public class SiteServiceImpl implements SiteService, SiteModel } // If there are user permissions then they take priority - if(result.size() > 0) + if (result.size() > 0) { - return result; + return result; } // Now do a deep search through all users and groups @@ -1268,22 +1274,8 @@ public class SiteServiceImpl implements SiteService, SiteModel if (role != null) { // Check that we are not about to remove the last site manager - if (SiteModel.SITE_MANAGER.equals(role) == true) - { - String mgrGroup = getSiteRoleGroup(shortName, SITE_MANAGER, true); - Set siteUserMangers = this.authorityService.getContainedAuthorities(AuthorityType.USER, - mgrGroup, - true); - Set siteGroupManagers = this.authorityService.getContainedAuthorities(AuthorityType.GROUP, - mgrGroup, - true); - - if (siteUserMangers.size() + siteGroupManagers.size() == 1) - { - throw new SiteServiceException(MSG_DO_NOT_CHANGE_MGR, new Object[]{authorityName}); - } - } - + checkLastManagerRemoval(shortName, authorityName, role); + // If ... // -- the current user has change permissions rights on the site // or @@ -1376,22 +1368,8 @@ public class SiteServiceImpl implements SiteService, SiteModel currentRole == null)) { // Check that we are not about to remove the last site manager - if (SiteModel.SITE_MANAGER.equals(currentRole) == true) - { - String mgrGroup = getSiteRoleGroup(shortName, SITE_MANAGER, true); - Set siteUserMangers = this.authorityService.getContainedAuthorities(AuthorityType.USER, - mgrGroup, - true); - Set siteGroupManagers = this.authorityService.getContainedAuthorities(AuthorityType.GROUP, - mgrGroup, - true); - - if (siteUserMangers.size() + siteGroupManagers.size() == 1) - { - throw new SiteServiceException(MSG_DO_NOT_CHANGE_MGR, new Object[]{authorityName}); - } - } - + checkLastManagerRemoval(shortName, authorityName, currentRole); + // Run as system user AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork() { @@ -1510,8 +1488,7 @@ public class SiteServiceImpl implements SiteService, SiteModel } // Add the container aspect - Map aspectProps = new HashMap( - 1); + Map aspectProps = new HashMap(1, 1.0f); aspectProps.put(SiteModel.PROP_COMPONENT_ID, componentId); this.nodeService.addAspect(containerNodeRef, ASPECT_SITE_CONTAINER, aspectProps); @@ -1666,14 +1643,32 @@ public class SiteServiceImpl implements SiteService, SiteModel return ""; } } - - public void setRoleComparator(Comparator roleComparator) { - this.roleComparator = roleComparator; - } - - public Comparator getRoleComparator() { - return roleComparator; - } - + /** + * Helper to check that we are not removing the last Site Manager from a site + * + * @param shortName + * @param authorityName + * @param role + */ + private void checkLastManagerRemoval(final String shortName, final String authorityName, final String role) + { + // Check that we are not about to remove the last site manager + if (SiteModel.SITE_MANAGER.equals(role) == true) + { + String mgrGroup = getSiteRoleGroup(shortName, SITE_MANAGER, true); + Set siteUserMangers = this.authorityService.getContainedAuthorities( + AuthorityType.USER, mgrGroup, true); + if (siteUserMangers.size() <= 1) + { + Set siteGroupManagers = this.authorityService.getContainedAuthorities( + AuthorityType.GROUP, mgrGroup, true); + + if (siteUserMangers.size() + siteGroupManagers.size() == 1) + { + throw new SiteServiceException(MSG_DO_NOT_CHANGE_MGR, new Object[] {authorityName}); + } + } + } + } } diff --git a/source/java/org/alfresco/repo/template/People.java b/source/java/org/alfresco/repo/template/People.java index c75ae8e31b..954638346d 100644 --- a/source/java/org/alfresco/repo/template/People.java +++ b/source/java/org/alfresco/repo/template/People.java @@ -207,7 +207,6 @@ public class People extends BaseTemplateProcessorExtension implements Initializi * Gets the members (people) of a group (including all sub-groups) * * @param group the group to retrieve members for - * @param recurse recurse into sub-groups * * @return list of nodes representing the group members */ @@ -236,7 +235,7 @@ public class People extends BaseTemplateProcessorExtension implements Initializi * * @param person the user (cm:person) to get the containing groups for * - * @return the containing groups as a JavaScript array, can be null + * @return the containing groups as a List of TemplateNode objects, can be null */ public List getContainerGroups(TemplateNode person) { @@ -272,11 +271,11 @@ public class People extends BaseTemplateProcessorExtension implements Initializi } /** - * Return true if the specified user is an Administrator authority. + * Return true if the specified user is an Guest authority. * * @param person to test * - * @return true if an admin, false otherwise + * @return true if a guest user, false otherwise */ public boolean isGuest(TemplateNode person) { @@ -287,8 +286,7 @@ public class People extends BaseTemplateProcessorExtension implements Initializi /** * Gets a map of capabilities (boolean assertions) for the given person. * - * @param person - * the person + * @param person the person * @return the capability map */ public Map getCapabilities(final TemplateNode person)