Package com.agiletec.plugins.jpavatar.apsadmin.avatar

Source Code of com.agiletec.plugins.jpavatar.apsadmin.avatar.AvatarAction

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando software.
* Entando is a free software;
* You can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions  
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpavatar.apsadmin.avatar;

import java.io.File;
import java.io.FileInputStream;

import com.agiletec.aps.system.ApsSystemUtils;
import com.agiletec.apsadmin.system.BaseAction;
import com.agiletec.plugins.jpavatar.aps.system.services.avatar.IAvatarManager;
import com.agiletec.plugins.jpavatar.aps.system.utils.ImageInfo;

public class AvatarAction extends BaseAction implements IAvatarAction {

  @Override
  public void validate() {
    super.validate();
    this.checkAvatar();
  }
 
  private void checkAvatar() {
    File avatar = this.getAvatar();
    if (null != avatar && this.getAvatarFileName().trim().length() > 0) {
      String fileName = this.getAvatarFileName();
      String docType = fileName.substring(fileName.lastIndexOf('.')+1).trim();
      String[] types = this.getImageTypes().split(",");
      if (!isValidType(docType, types)) {
        String[] args = new String[1];
        args[0] = this.getImageTypes();
        this.addFieldError("Avatar", this.getText("jpavatar.avatar.invalidType",  args));
      }
      if (avatar.length() > this.getImageMaxSize() * 1024) {
        String[] args = new String [2];
        args[0] = new Long(avatar.length()).toString();
        args[1] = new Long(this.getImageMaxSize() * 1024).toString();
        this.addFieldError("Avatar", this.getText("jpavatar.avatar.sizeTooBig", args));
      }
      ImageInfo imageInfo = new ImageInfo();
      try {
        FileInputStream fis = new FileInputStream(this.getAvatar());
        imageInfo.setInput(fis);
        if (imageInfo.check()) {
          int width = imageInfo.getWidth();
          int heigth = imageInfo.getHeight();
          if (width != this.getImageWidth() || heigth != this.getImageHeight()) {
            String[] args = new String[4];
            args[0] = new Integer(this.getImageWidth()).toString();
            args[1] = new Integer(this.getImageHeight()).toString();
            args[2] = new Integer(width).toString();
            args[3] = new Integer(heigth).toString();
            this.addFieldError("Avatar", this.getText("jpavatar.avatar.wrongSize", args));
          }
        }
      } catch (Throwable t) {
        ApsSystemUtils.logThrowable(t, this, "checkAvatar");
        throw new RuntimeException("error in avatar validation for user " + this.getCurrentUser().getUsername(), t);
      }
    }
  }
 
  private boolean isValidType(String docType, String[] rightTypes) {
    boolean isValid = false;
    if (rightTypes.length > 0) {
      for (int i = 0; i < rightTypes.length; i++) {
        if (docType.toLowerCase().equals(rightTypes[i].toLowerCase())) {
          isValid = true;
          break;
        }
      }
    } else {
      isValid = true;
    }
    return isValid;
  }

  public String getAvatarResource() {
    String avatarRes = null;
    try {
      File aFile = this.getAvatarManager().getAvatarResource(this.getCurrentUser().getUsername());
      if (null != aFile) {
        avatarRes = aFile.getName();
      }
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "getAvatarResource");
      throw new RuntimeException("error in getAvatarRecource for " + this.getCurrentUser().getUsername(), t);
    }
    return avatarRes;
  }
 
  @Override
  public String edit() {
    return SUCCESS;
  }
 
  @Override
  public String save() {
    try {
      if (null != this.getAvatar()) {
        this.getAvatarManager().saveAvatar(this.getCurrentUser().getUsername(), this.getAvatar(), this.getAvatarFileName());
      }
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "save");
      return FAILURE;
    }
    return SUCCESS;
  }

  @Override
  public String bin() {
    try {
      this.addActionMessage(this.getText("jpavatar.message.confirmDelete"));
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "bin");
      return FAILURE;
    }
    return SUCCESS;
  }
 
  @Override
  public String delete() {
    try {
      this.getAvatarManager().removeAvatar(this.getCurrentUser().getUsername());
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "delete");
      return FAILURE;
    }
    return SUCCESS;
  }

  public void setImageTypes(String imageTypes) {
    this._imageTypes = imageTypes.toLowerCase();
  }
  public String getImageTypes() {
    return _imageTypes;
  }

  public void setImageMaxSize(int imageMaxSize) {
    this._imageMaxSize = imageMaxSize;
  }
  public int getImageMaxSize() {
    return _imageMaxSize;
  }
 
  public void setImageWidth(int imageWidth) {
    this._imageWidth = imageWidth;
  }
  public int getImageWidth() {
    return _imageWidth;
  }
 
  public void setImageHeight(int imageHeight) {
    this._imageHeight = imageHeight;
  }
  public int getImageHeight() {
    return _imageHeight;
  }

  public void setAvatar(File avatar) {
    this._avatar = avatar;
  }
  public File getAvatar() {
    return _avatar;
  }

  public void setAvatarContentType(String avatarContentType) {
    this._avatarContentType = avatarContentType;
  }
  public String getAvatarContentType() {
    return _avatarContentType;
  }

  public void setAvatarFileName(String avatarFileName) {
    this._avatarFileName = avatarFileName;
  }
  public String getAvatarFileName() {
    return _avatarFileName;
  }

  public void setAvatarManager(IAvatarManager avatarManager) {
    this._avatarManager = avatarManager;
  }
  protected IAvatarManager getAvatarManager() {
    return _avatarManager;
  }

  private File _avatar;
  private String _avatarContentType;
  private String _avatarFileName;
  private String _imageTypes;
  private int _imageMaxSize;
  private int _imageWidth;
  private int _imageHeight;
  private IAvatarManager _avatarManager;
 
}
TOP

Related Classes of com.agiletec.plugins.jpavatar.apsadmin.avatar.AvatarAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.