OrgUtils.java :  » MVC » simpleframework » net » simpleframework » organization » Java Open Source

Java Open Source » MVC » simpleframework 
simpleframework » net » simpleframework » organization » OrgUtils.java
package net.simpleframework.organization;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import net.simpleframework.ado.DataObjectManagerFactory;
import net.simpleframework.ado.db.IQueryEntityManager;
import net.simpleframework.organization.account.AccountManager;
import net.simpleframework.organization.account.AccountSession;
import net.simpleframework.organization.account.IAccount;
import net.simpleframework.organization.impl.JobChartManager;
import net.simpleframework.organization.impl.JobManager;
import net.simpleframework.organization.impl.JobMemberManager;
import net.simpleframework.organization.rule.JrAdmin;
import net.simpleframework.organization.rule.JrAnonymous;
import net.simpleframework.organization.user.DepartmentManager;
import net.simpleframework.organization.user.IUser;
import net.simpleframework.organization.user.UserManager;
import net.simpleframework.util.ImageUtils;
import net.simpleframework.util.IoUtils;
import net.simpleframework.util.StringUtils;
import net.simpleframework.web.page.PageRequestResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * LGPLv3
 * 
 * @author (cknet@126.com, 13910090885)
 *         http://code.google.com/p/simpleframework/
 *         http://www.simpleframework.net
 */
public class OrgUtils {
  static final Log logger = LogFactory.getLog(OrgUtils.class);

  public static OrganizationApplicationModule organizationModule;

  public static String deployPath;

  public static String getCssPath(final PageRequestResponse requestResponse) throws Exception {
    final StringBuilder sb = new StringBuilder();
    sb.append(deployPath).append("css/").append(organizationModule.getSkin(requestResponse));
    return sb.toString();
  }

  public static IQueryEntityManager getQueryEntityManager() {
    return DataObjectManagerFactory.getQueryEntityManager(organizationModule.getApplication());
  }

  private static Object amgr, jmgr, jmmgr, jcmgr, umgr, dmgr;

  public static AccountManager am() {
    if (amgr == null) {
      amgr = organizationModule.createAccountManager();
    }
    return (AccountManager) amgr;
  }

  public static JobManager jm() {
    if (jmgr == null) {
      jmgr = organizationModule.createJobManager();
    }
    return (JobManager) jmgr;
  }

  public static JobMemberManager jmm() {
    if (jmmgr == null) {
      jmmgr = organizationModule.createJobMemberManager();
    }
    return (JobMemberManager) jmmgr;
  }

  public static JobChartManager jcm() {
    if (jcmgr == null) {
      jcmgr = organizationModule.createJobChartManager();
    }
    return (JobChartManager) jcmgr;
  }

  public static UserManager um() {
    if (umgr == null) {
      umgr = organizationModule.createUserManager();
    }
    return (UserManager) umgr;
  }

  public static DepartmentManager dm() {
    if (dmgr == null) {
      dmgr = organizationModule.createDepartmentManager();
    }
    return (DepartmentManager) dmgr;
  }

  public static void deletePhoto(final PageRequestResponse requestResponse, final Object userId) {
    final File photoCache = new File(requestResponse.getServletContext().getRealPath(
        OrgUtils.deployPath + "photo-cache"));
    if (!photoCache.exists()) {
      return;
    }
    for (final File photo : photoCache.listFiles(new FilenameFilter() {
      @Override
      public boolean accept(final File dir, final String name) {
        return name.startsWith(userId + "_");
      }
    })) {
      photo.delete();
    }
  }

  public static IUser getUserByObject(final Object userObject) {
    if (userObject instanceof IUser) {
      return (IUser) userObject;
    } else if (userObject instanceof IAccount) {
      return ((IAccount) userObject).getUser();
    } else {
      return OrgUtils.um().getUserById(userObject);
    }
  }

  public static String getPhotoSRC(final HttpServletRequest request, final Object userObject,
      final int width, final int height) throws IOException {
    final StringBuilder sb = new StringBuilder();
    final IUser user = getUserByObject(userObject);
    final InputStream inputStream;
    if (user == null || (inputStream = user.getPhoto()) == null) {
      sb.append(OrgUtils.deployPath).append("images/none.gif");
    } else {
      final File photoCache = new File(request.getSession().getServletContext()
          .getRealPath(OrgUtils.deployPath + File.separator + "photo-cache"));
      if (!photoCache.exists()) {
        IoUtils.createDirectoryRecursively(photoCache);
      }
      final String filename = user.getId() + "_" + width + "_" + height + ".png";
      final File photoFile = new File(photoCache.getAbsolutePath() + File.separator + filename);
      if (!photoFile.exists() || photoFile.length() == 0) {
        ImageUtils.thumbnail(inputStream, width, height, new FileOutputStream(photoFile));
      }
      sb.append(OrgUtils.deployPath).append("photo-cache/").append(filename);
    }
    return sb.toString();
  }

  public static String getPhotoSRC(final HttpServletRequest request, final Object userId)
      throws IOException {
    return getPhotoSRC(request, userId, 128, 128);
  }

  /*  */
  public static boolean isManagerMember(final IUser user, final Object... objects) {
    return isMember(IJob.sj_manager, user, objects);
  }

  public static boolean isManagerMember(final HttpSession httpSession, final Object... objects) {
    return isMember(IJob.sj_manager, httpSession, objects);
  }

  public static boolean isMember(final String jn, final HttpSession httpSession,
      final Object... objects) {
    final IAccount account = AccountSession.getLogin(httpSession);
    return isMember(jn, account != null ? account.getUser() : null);
  }

  public static boolean isMember(final String jn, final IUser user, final Object... objects) {
    if (OrgUtils.deployPath == null) {
      return false;// 
    }
    if (JrAdmin.jr.isMember(user, objects)) {
      return true;
    }
    final IJob job = jm().getJobByName(IJob.sj_manager);
    if (job != null) {
      if (jm().isMember(user, job, objects)) {
        return true;
      }
    }
    if (!StringUtils.hasText(jn)) {
      return true;
    }
    if (jn.equals(IJob.sj_anonymous)) {
      return JrAnonymous.jr.isMember(user, objects);
    }
    for (final String j : StringUtils.tokenizeToStringArray(jn)) {
      if (_isMember(j, user, objects)) {
        return true;
      }
    }
    return false;
  }

  private static boolean _isMember(final String jn, final IUser user, final Object... objects) {
    // jn#
    if (jn.startsWith("#")) {
      final IUser user2;
      if ((user2 = um().getUserByName(jn.substring(1))) == null) {
        return false;
      }
      if (user2.equals(user)) {
        return true;
      }
    } else {
      IJob job;
      if ((job = jm().getJobByName(jn)) == null) {
        return false;
      }
      return jm().isMember(user, job, objects);
    }
    return false;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.