Пример #1
0
  /** 各フィールドを初期化します。 <br> */
  @Override
  public void initField() {
    // ロール名
    acl_role_name = new ALStringField();
    acl_role_name.setFieldName(ALLocalizationUtils.getl10n("ACCESSCTL_ROLE_NAME"));
    acl_role_name.setTrim(true);

    // 機能
    feature_id = new ALNumberField();
    feature_id.setFieldName(ALLocalizationUtils.getl10n("ACCESSCTL_ROLE_NAME"));

    // メモ
    note = new ALStringField();
    note.setFieldName(ALLocalizationUtils.getl10n("ACCESSCTL_MEMO"));
    note.setTrim(false);

    acllist = new ALNumberField();
    acldetail = new ALNumberField();
    aclinsert = new ALNumberField();
    aclupdate = new ALNumberField();
    acldelete = new ALNumberField();
    aclexport = new ALNumberField();

    // メンバーリスト
    memberList = new ArrayList<ALEipUser>();
  }
Пример #2
0
  /**
   * 入力フィールド値を検証します。
   *
   * @param msgList
   * @return
   */
  public boolean validate(List<String> msgList) {
    if (msgList == null) {
      msgList = new ArrayList<String>();
    }

    if (!isNotNullValue()) {
      if (isNotNull()) {
        // 必須入力属性で値が設定されていない場合
        msgList.add(ALLocalizationUtils.getl10nFormat("COMMONS_FIELD_INPUT_NAME_SPAN", fieldName));
        return false;
      }
    } else {
      if (!isValidCharacterType()) {
        // 設定されている文字セット以外の文字を含む場合
        msgList.add(
            ALLocalizationUtils.getl10nFormat(
                "COMMONS_FIELD_INPUT_CHAR_TYPE_BY_NAME_SPAN", fieldName, getCharTypeByName()));
        return false;
      } else {
        if (isLimitLength()) {
          // 文字列長制限がある場合
          int len = value.length();
          if (len < getMinLength()) {
            // 文字列長が最小値を下回る場合
            msgList.add(
                ALLocalizationUtils.getl10nFormat(
                    "COMMONS_FIELD_INPUT_LENGTH_CAUTION_LESS_SPAN", fieldName, getMinLength()));
            return false;
          }
          if (len > getMaxLength()) {
            // 文字列長が最大値を上回る場合
            msgList.add(
                ALLocalizationUtils.getl10nFormat(
                    "COMMONS_FIELD_INPUT_LENGTH_CAUTION_OVER_SPAN", fieldName, getMaxLength()));
            return false;
          }
        }
        if (!isUTF8()) {
          // utf-8を超える範囲の文字が含まれている場合
          msgList.add(
              ALLocalizationUtils.getl10nFormat("COMMONS_FIELD_INPUT_NOT_UTF_EIGHT", fieldName));
          return false;
        }
      }
    }

    return true;
  }
Пример #3
0
 /**
  * 最終アクセス時間を取得します。
  *
  * @return
  */
 public String getLastAccessTime() {
   StringBuffer str = new StringBuffer();
   Calendar cal = Calendar.getInstance();
   cal.setTime(super.getLastAccessDate());
   return str.append(cal.get(Calendar.YEAR))
       .append(ALLocalizationUtils.getl10n("COMMON_YEAR"))
       .append((cal.get(Calendar.MONTH) + 1))
       .append(ALLocalizationUtils.getl10n("COMMON_MONTH"))
       .append(cal.get(Calendar.DATE))
       .append(ALLocalizationUtils.getl10n("COMMON_DAY"))
       .append(cal.get(Calendar.HOUR_OF_DAY))
       .append(ALLocalizationUtils.getl10n("COMMON_HOUR"))
       .append(cal.get(Calendar.MINUTE))
       .append(ALLocalizationUtils.getl10n("COMMON_MINUTE"))
       .toString();
 }
Пример #4
0
  /**
   * フォームに入力されたデータの妥当性検証を行います。 <br>
   *
   * @param msgList
   * @return
   */
  @Override
  protected boolean validate(List<String> msgList) {
    position_name.validate(msgList);

    try {
      SelectQuery<EipMPosition> query = Database.query(EipMPosition.class);

      if (ALEipConstants.MODE_INSERT.equals(getMode())) {
        Expression exp =
            ExpressionFactory.matchExp(
                EipMPosition.POSITION_NAME_PROPERTY, position_name.getValue());
        query.setQualifier(exp);
      } else if (ALEipConstants.MODE_UPDATE.equals(getMode())) {
        Expression exp1 =
            ExpressionFactory.matchExp(
                EipMPosition.POSITION_NAME_PROPERTY, position_name.getValue());
        query.setQualifier(exp1);
        Expression exp2 =
            ExpressionFactory.noMatchDbExp(
                EipMPosition.POSITION_ID_PK_COLUMN, Integer.valueOf(position_id));
        query.andQualifier(exp2);
      }

      if (query.fetchList().size() != 0) {
        msgList.add(ALLocalizationUtils.getl10nFormat("ACCOUNT_VALIDATE_POSITION", position_name));
      }
    } catch (Exception ex) {
      logger.error("AccountPositionFormData.validate", ex);
      return false;
    }

    return (msgList.size() == 0);
  }
Пример #5
0
  /** @return */
  public String getNote() {
    String htmlText;
    try {
      String noteText = note.toString();

      /* 太字 */
      noteText = noteText.replaceAll("&#39;&#39;&#39;", "'''");

      /* 斜体 */
      noteText = noteText.replaceAll("&#39;&#39;", "''");

      /* 下線 */
      noteText = noteText.replaceAll("&lt;u&gt;", "<u>");
      noteText = noteText.replaceAll("&lt;/u&gt;", "</u>");

      /* 取り消し線 */
      noteText = noteText.replaceAll("&lt;del&gt;", "<del>");
      noteText = noteText.replaceAll("&lt;/del&gt;", "</del>");

      if (null == model) {
        model = new WikiModel("", "");
      }
      htmlText = model.render(noteText);

      /* 添付ファイル */
      for (FileuploadBean attachmentfile : attachmentFileList) {
        htmlText =
            htmlText.replace(
                "!" + attachmentfile.getFileName() + "!",
                "<br>"
                    + "<a href=\"javascript:void(0);\" onclick=\"aipo.fileupload.showImageDialog('"
                    + baseImageRawLink
                    + "/ownerid/"
                    + owner_id.getValue()
                    + "/entityid/"
                    + id
                    + "/attachmentindex/"
                    + attachmentfile.getFileId()
                    + "/f/"
                    + attachmentfile.getFileName()
                    + "');\" >"
                    + "<img class='width_thumbs' border='0' alt='"
                    + attachmentfile.getFileName()
                    + "' title='"
                    + attachmentfile.getFileName()
                    + "' src='"
                    + baseImageLink
                    + "?entityid="
                    + id
                    + "&attachmentindex="
                    + attachmentfile.getFileId()
                    + "'></a>");
      }

    } catch (Exception e) {
      logger.error("WikiResultData.getNote", e);
      return ALLocalizationUtils.getl10n("WIKI_ERROR");
    }
    return htmlText;
  }
Пример #6
0
 public String getEndDateFormatSpace() {
   return ALLocalizationUtils.getl10nFormat(
       "SCHEDULE_DATE_FORMAT",
       getEndDate().getYear(),
       getEndDate().getMonth(),
       getEndDate().getDay());
 }
 @Override
 public String getViewDateText() {
   return ALLocalizationUtils.getl10nFormat(
       "SCHEDULE_DATE_FORMAT_NOSPACE",
       getViewDate().getYear(),
       getViewDate().getMonth(),
       getViewDate().getDay());
 }
Пример #8
0
 @Override
 public void initField() {
   // カテゴリ名
   category_name = new ALStringField();
   category_name.setFieldName(ALLocalizationUtils.getl10n("MSGBOARD_CATEGORY_NAME"));
   category_name.setTrim(true);
   // メモ
   note = new ALStringField();
   note.setFieldName(ALLocalizationUtils.getl10n("MSGBOARD_MEMO"));
   note.setTrim(true);
   // 閲覧/返信フラグ
   access_flag = new ALNumberField();
   access_flag.setFieldName(ALLocalizationUtils.getl10n("MSGBOARD_CHANGE_VIEWS"));
   access_flag.setValue(0);
   // メンバーリスト
   memberList = new ArrayList<ALEipUser>();
 }
Пример #9
0
  @Override
  protected boolean validate(List<String> msgList) {
    new_passwd.validate(msgList);
    new_passwd_confirm.validate(msgList);

    if (!new_passwd.toString().equals(new_passwd_confirm.toString())) {
      msgList.add(ALLocalizationUtils.getl10n("ACCOUNT_ALERT_NEWPW"));
    }
    return (msgList.size() == 0);
  }
Пример #10
0
 @Override
 public void initField() {
   // スーパークラスのメソッドを呼び出します。
   super.initField();
   // 場所
   place = new ALStringField();
   // 内容
   note = new ALStringField();
   note.setTrim(false);
   // テキスト
   text = new ALStringField();
   text.setValue("");
   // 作成日
   createDate =
       new ALDateTimeField(ALLocalizationUtils.getl10n("SCHEDULE_SIMPLE_DATE_FORMAT_DAY"));
   // 更新日時
   updateDate =
       new ALDateTimeField(ALLocalizationUtils.getl10n("SCHEDULE_SIMPLE_DATE_FORMAT_DAY"));
 }
Пример #11
0
 public String getSpanDateText() {
   return ALLocalizationUtils.getl10nFormat(
       "SCHEDULE_UNTIL_SPAN",
       start_date.getYear(),
       start_date.getMonth(),
       start_date.getDay(),
       start_date.getDayOfWeek(),
       end_date.getYear(),
       end_date.getMonth(),
       end_date.getDay(),
       end_date.getDayOfWeek());
 }
Пример #12
0
  /**
   * @param map
   * @return
   */
  @Override
  protected Object getResultData(EipTNoteMap map) {
    try {
      EipTNote record = map.getEipTNote();

      NoteClientResultData rd = new NoteClientResultData();
      rd.initField();
      rd.setNoteId(record.getNoteId().intValue());
      rd.setClientName(ALCommonUtils.compressString(record.getClientName(), getStrLength()));
      rd.setCompanyName(ALCommonUtils.compressString(record.getCompanyName(), getStrLength()));
      rd.setNoteStat(map.getNoteStat());
      rd.setAcceptDate(record.getAcceptDate());

      String subject = "";
      if (record.getSubjectType().equals("0")) {
        subject = ALCommonUtils.compressString(record.getCustomSubject(), getStrLength());
      } else if (record.getSubjectType().equals("1")) {
        subject = ALLocalizationUtils.getl10n("NOTE_CALL_AGAIN_NO_PERIOD");
      } else if (record.getSubjectType().equals("2")) {
        subject = ALLocalizationUtils.getl10n("NOTE_MAIL_CALL_BACK");
      } else if (record.getSubjectType().equals("3")) {
        subject = ALLocalizationUtils.getl10n("NOTE_MAIL_TELL_ME");
      } else if (record.getSubjectType().equals("4")) {
        subject = ALLocalizationUtils.getl10n("NOTE_MAIL_TAKE_A_MESSAGE");
      }

      rd.setSubject(subject);

      if (NoteUtils.NOTE_STAT_NEW.equals(map.getNoteStat())) {
        rd.setNoteStat(NoteUtils.NOTE_STAT_NEW);
        rd.setNoteStatImage("images/note/note_new_message.gif");
        rd.setNoteStatImageDescription(ALLocalizationUtils.getl10n("NOTE_NEW_MESSAGE"));
      } else if (NoteUtils.NOTE_STAT_UNREAD.equals(map.getNoteStat())) {
        rd.setNoteStat(NoteUtils.NOTE_STAT_UNREAD);
        rd.setNoteStatImage("images/note/note_unread_message.gif");
        rd.setNoteStatImageDescription(ALLocalizationUtils.getl10n("NOTE_UNREAD_MESSAGE"));
      } else {
        rd.setNoteStat(NoteUtils.NOTE_STAT_READ);
        rd.setNoteStatImage("images/note/note_read_message.gif");
        rd.setNoteStatImageDescription(ALLocalizationUtils.getl10n("NOTE_READ_MESSAGE"));
      }

      ALEipUser user = ALEipUtils.getALEipUser(Integer.valueOf(record.getOwnerId()).intValue());
      rd.setSrcUserId(record.getOwnerId());
      rd.setSrcUserFullName(user.getAliasName().getValue());

      return rd;
    } catch (RuntimeException e) {
      logger.error("note", e);
      return null;
    } catch (Exception ex) {
      logger.error("note", ex);
      return null;
    }
  }
Пример #13
0
  @Override
  public void initField() {
    // メール作成のタイプ
    mailType = new ALNumberField();
    mailType.setFieldName(ALLocalizationUtils.getl10n("WEBMAIL_SETFIELDNAME_TYPE"));

    // To
    to = new ALStringField();
    to.setFieldName(ALLocalizationUtils.getl10n("WEBMAIL_SETFIELDNAME_TO"));
    to.setTrim(true);

    // CC
    cc = new ALStringField();
    cc.setFieldName(ALLocalizationUtils.getl10n("WEBMAIL_SETFIELDNAME_CC"));
    cc.setTrim(true);

    // BCC
    bcc = new ALStringField();
    bcc.setFieldName(ALLocalizationUtils.getl10n("WEBMAIL_SETFIELDNAME_BCC"));
    bcc.setTrim(true);

    // Subject
    subject = new ALStringField();
    subject.setFieldName(ALLocalizationUtils.getl10n("WEBMAIL_SETFIELDNAME_SUBJECT"));
    subject.setTrim(true);

    // Body
    body = new ALStringField();
    body.setFieldName(ALLocalizationUtils.getl10n("WEBMAIL_SETFIELDNAME_BODY"));
    body.setTrim(false);

    fileuploadList = new ArrayList<FileuploadLiteBean>();
  }
Пример #14
0
  /**
   * ロールをデータベースに格納します。 <br>
   *
   * @param rundata
   * @param context
   * @param msgList
   * @return TRUE 成功 FALSE 失敗
   */
  @Override
  protected boolean insertFormData(RunData rundata, Context context, List<String> msgList) {
    try {
      Date now = Calendar.getInstance().getTime();

      // 新規オブジェクトモデル
      EipTAclRole aclrole = Database.create(EipTAclRole.class);
      aclrole.setRoleName(acl_role_name.getValue());
      aclrole.setNote(note.getValue());

      long aclType = getAclTypeValue();
      aclrole.setAclType(Integer.valueOf((int) aclType));

      EipTAclPortletFeature feature =
          Database.get(EipTAclPortletFeature.class, Integer.valueOf((int) feature_id.getValue()));
      aclrole.setEipTAclPortletFeature(feature);

      // 登録日
      aclrole.setCreateDate(now);
      // 更新日
      aclrole.setUpdateDate(now);

      // userMapの登録
      insertEipTAclUserRoleMap(aclrole, memberList.get(0));

      // メンバー登録
      int size = memberList.size();
      for (int i = 1; i < size; i++) {
        insertEipTAclUserRoleMap(aclrole, memberList.get(i));
      }

      // ロールを登録
      Database.commit();

      // イベントログに保存
      ALEventlogFactoryService.getInstance()
          .getEventlogHandler()
          .log(
              aclrole.getRoleId(),
              ALEventlogConstants.PORTLET_TYPE_ACCESSCTL,
              ALLocalizationUtils.getl10nFormat("ACCESSCTL_EVENTLOG_ADD", aclrole.getRoleName()));

    } catch (Exception ex) {
      Database.rollback();
      logger.error("AccessControlFormData.insertFormData", ex);
      return false;
    }
    return true;
  }
Пример #15
0
  /**
   * タスク担当者へ通知メールを送る
   *
   * @param taskId タスクID
   * @return 成否
   */
  public static boolean sendMailForTaskMembers(
      RunData rundata,
      Context context,
      EipTProjectTask task,
      EipTProject project,
      List<ProjectTaskMemberResultData> mailUserList) {

    String orgId = Database.getDomainName();
    String subject =
        "["
            + ALOrgUtilsService.getAlias()
            + "]"
            + ALLocalizationUtils.getl10n("PROJECT_MAIL_TITLE");

    try {
      List<ALEipUser> memberList = new ArrayList<ALEipUser>();
      for (ProjectTaskMemberResultData rd : mailUserList) {
        memberList.add(ALEipUtils.getALEipUser(rd.getUserId().getValueWithInt()));
      }

      List<ALEipUserAddr> destMemberList =
          ALMailUtils.getALEipUserAddrs(memberList, ALEipUtils.getUserId(rundata), false);

      List<ALAdminMailMessage> messageList = new ArrayList<ALAdminMailMessage>();
      for (ALEipUserAddr destMember : destMemberList) {
        ALAdminMailMessage message = new ALAdminMailMessage(destMember);
        message.setPcSubject(subject);
        message.setCellularSubject(subject);
        message.setPcBody(createTaskMemberMsg(rundata, message.getPcMailAddr(), task, project));
        message.setCellularBody(
            createTaskMemberMsg(rundata, message.getCellMailAddr(), task, project));
        messageList.add(message);
      }

      ALMailService.sendAdminMailAsync(
          new ALAdminMailContext(
              orgId,
              ALEipUtils.getUserId(rundata),
              messageList,
              ALMailUtils.getSendDestType(ALMailUtils.KEY_MSGTYPE_WORKFLOW)));

    } catch (Exception ex) {
      logger.error("project", ex);
      return false;
    }
    return true;
  }
Пример #16
0
  /**
   * @param rundata
   * @param context
   * @param msgList
   * @return
   */
  @Override
  protected boolean updateFormData(RunData rundata, Context context, List<String> msgList) {
    boolean res = true;
    try {

      ALBaseUser user = AccountUtils.getBaseUser(rundata, context);
      if (user == null) {
        return false;
      }

      // WebAPIのDBへ接続できるか確認
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler().checkConnect()) {
        msgList.add(ALLocalizationUtils.getl10n("ACCOUNT_ALERT_CONNECT_DB_FAILED"));
        return false;
      }

      // 新しいパスワードをセットする
      JetspeedSecurity.forcePassword(user, new_passwd.toString());

      // ユーザを更新する
      JetspeedSecurity.saveUser(user);

      // WebAPIとのDB同期
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler().updateUser(user)) {
        return false;
      }

      ALBaseUser currentUser = (ALBaseUser) rundata.getUser();
      if (currentUser.getUserName().equals(user.getUserName())) {
        currentUser.setPassword(user.getPassword());
      }

      // イベントログに保存
      ALEventlogFactoryService.getInstance()
          .getEventlogHandler()
          .log(Integer.valueOf(user.getUserId()), ALEventlogConstants.PORTLET_TYPE_ACCOUNT, null);

    } catch (Exception e) {
      logger.error("AccountPasswdFormData.updateFormData", e);
      res = false;
    }
    return res;
  }
Пример #17
0
  /**
   * ロールをデータベースから削除します。 <br>
   *
   * @param rundata
   * @param context
   * @param msgList
   * @return TRUE 成功 FALSE 失敗
   */
  @Override
  protected boolean deleteFormData(RunData rundata, Context context, List<String> msgList) {
    try {

      String aclroleid = ALEipUtils.getTemp(rundata, context, ALEipConstants.ENTITY_ID);
      if (aclroleid == null || Integer.valueOf(aclroleid) == null) {
        // IDが空の場合
        logger.debug("[AccessControlUtils] Empty ID...");
        return false;
      }

      Expression exp = ExpressionFactory.matchDbExp(EipTAclRole.ROLE_ID_PK_COLUMN, aclroleid);
      SelectQuery<EipTAclRole> query = Database.query(EipTAclRole.class, exp);
      List<EipTAclRole> aclroles = query.fetchList();
      if (aclroles == null || aclroles.size() == 0) {
        // 指定したIDのレコードが見つからない場合
        logger.debug("[AccessControlUtils] Not found ID...");
        return false;
      }

      // オブジェクトを削除(Cayenneのカスケード設定でEipTAclUserRoleMapも同時に削除)
      Database.delete(aclroles.get(0));

      Database.commit();

      // イベントログに保存
      for (EipTAclRole role : aclroles) {
        ALEventlogFactoryService.getInstance()
            .getEventlogHandler()
            .log(
                role.getRoleId(),
                ALEventlogConstants.PORTLET_TYPE_ACCESSCTL,
                ALLocalizationUtils.getl10nFormat("ACCESSCTL_EVENTLOG_DELETE", role.getRoleName()));
      }

    } catch (Exception ex) {
      Database.rollback();
      logger.error("AccessControlFormData.deleteFormData", ex);
      return false;
    }
    return true;
  }
Пример #18
0
 /**
  * 文字の種類の表示名を取得します。
  *
  * @return
  */
 protected String getCharTypeByName() {
   switch (characterType) {
     case TYPE_ALPHABET:
       return ALLocalizationUtils.getl10n("COMMONS_FIELD_TYPE_ALPHABET");
     case TYPE_NUMBER:
       return ALLocalizationUtils.getl10n("COMMONS_FIELD_TYPE_NUMBER");
     case TYPE_HANKAKUKANA:
       return ALLocalizationUtils.getl10n("COMMONS_FIELD_TYPE_HANKAKUKANA");
     case TYPE_MULTIBYTE:
       return ALLocalizationUtils.getl10n("COMMONS_FIELD_TYPE_MULTIBYTE");
     case TYPE_ALPHABET_NUMBER:
       return ALLocalizationUtils.getl10n("COMMONS_FIELD_TYPE_ALPHABET_NUMBER");
     case TYPE_ALPHABET_NUMBER_HANKAKUKANA:
       return ALLocalizationUtils.getl10n("COMMONS_FIELD_TYPE_ALPHABET_NUMBER_HANKAKUKANA");
     case TYPE_SYMBOL:
       return ALLocalizationUtils.getl10n("COMMONS_FIELD_TYPE_SYMBOL");
     case TYPE_ASCII:
       return ALLocalizationUtils.getl10n("COMMONS_FIELD_TYPE_ASCII");
   }
   // 文字種別無指定
   return "";
 }
  @Override
  protected Object getResultData(VEipTScheduleList record)
      throws ALPageNotFoundException, ALDBErrorException {
    ScheduleOnedayResultData rd = new ScheduleOnedayResultData();
    rd.initField();
    try {
      if ("R".equals(record.getStatus())) {
        return rd;
      }
      if (!ScheduleUtils.isView(
          view_date, record.getRepeatPattern(), record.getStartDate(), record.getEndDate())) {
        return rd;
      }

      boolean is_member = record.isMember();

      // Dummy スケジュールではない
      // 完全に隠す
      // 自ユーザー以外
      // 共有メンバーではない
      // オーナーではない
      if ((!"D".equals(record.getStatus()))
          && "P".equals(record.getPublicFlag())
          && (userid != record.getUserId().intValue())
          && (userid != record.getOwnerId().intValue())
          && !is_member) {
        return rd;
      } else if (!hasAclviewOther && !is_member) { // 閲覧権限がなく、グループでもない
        return rd;
      }
      if ("C".equals(record.getPublicFlag())
          && (userid != record.getUserId().intValue())
          && (userid != record.getOwnerId().intValue())
          && !is_member) {
        rd.setName(ALLocalizationUtils.getl10n("SCHEDULE_CLOSE_PUBLIC_WORD"));
        // 仮スケジュールかどうか
        rd.setTmpreserve(false);
      } else {
        rd.setName(record.getName());
        // 仮スケジュールかどうか
        rd.setTmpreserve("T".equals(record.getStatus()));
      }
      // ID
      rd.setScheduleId(record.getScheduleId().intValue());
      // 親スケジュール ID
      rd.setParentId(record.getParentId().intValue());
      // 開始日時
      rd.setStartDate(record.getStartDate());
      // 終了日時
      rd.setEndDate(record.getEndDate());
      // 公開するかどうか
      rd.setPublic("O".equals(record.getPublicFlag()));
      // 非表示にするかどうか
      rd.setHidden("P".equals(record.getPublicFlag()));
      // ダミーか
      rd.setDummy("D".equals(record.getStatus()));
      // ログインユーザかどうか
      rd.setLoginuser(record.getUserId().intValue() == userid);
      // オーナーかどうか
      rd.setOwner(record.getOwnerId().intValue() == userid);
      // 共有メンバーかどうか
      rd.setMember(is_member);
      // 繰り返しパターン
      rd.setPattern(record.getRepeatPattern());

      // 期間スケジュールの場合
      if (rd.getPattern().equals("S")) {
        return rd;
      }

      if (!rd.getPattern().equals("N")) {
        // 繰り返しスケジュール
        if (!ScheduleUtils.isView(
            view_date, rd.getPattern(), rd.getStartDate().getValue(), rd.getEndDate().getValue())) {
          return rd;
        }
        rd.setRepeat(true);
      }
      con.addResultData(rd, 0, 24, view_date);
    } catch (Exception e) {
      logger.error("schedule", e);
      return null;
    }
    return rd;
  }
Пример #20
0
  /**
   * フォームに入力されたデータの妥当性検証を行います。 <br>
   *
   * @param msgList
   * @return TRUE 成功 FALSE 失敗
   */
  @Override
  protected boolean validate(List<String> msgList) {
    String tmp_acl_role_name = acl_role_name.getValue();
    if (tmp_acl_role_name != null && !"".equals(tmp_acl_role_name)) {
      // ロール名の重複をチェックする
      try {
        SelectQuery<EipTAclRole> query = Database.query(EipTAclRole.class);
        if (ALEipConstants.MODE_INSERT.equals(getMode())) {
          Expression exp =
              ExpressionFactory.matchExp(EipTAclRole.ROLE_NAME_PROPERTY, tmp_acl_role_name);
          query.setQualifier(exp);
        } else if (ALEipConstants.MODE_UPDATE.equals(getMode())) {
          Expression exp1 =
              ExpressionFactory.matchExp(EipTAclRole.ROLE_NAME_PROPERTY, tmp_acl_role_name);
          query.setQualifier(exp1);
          Expression exp2 =
              ExpressionFactory.noMatchDbExp(
                  EipTAclRole.ROLE_ID_PK_COLUMN, Integer.valueOf(acl_role_id));
          query.andQualifier(exp2);
        }

        if (query.fetchList().size() != 0) {
          msgList.add(
              ALLocalizationUtils.getl10nFormat(
                  "ACCESSCTL_ALERT_ALREADY_CREATED", acl_role_name.toString()));
        }
      } catch (Exception ex) {
        logger.error("AccessControlFormData.validate", ex);
        return false;
      }
    }

    // ロール名
    acl_role_name.validate(msgList);
    // メモ
    note.validate(msgList);

    acllist.validate(msgList);
    acldetail.validate(msgList);
    aclinsert.validate(msgList);
    aclupdate.validate(msgList);
    acldelete.validate(msgList);
    aclexport.validate(msgList);

    // アクセス権限
    if (acllist.getValue() == 0
        && acldetail.getValue() == 0
        && aclinsert.getValue() == 0
        && aclupdate.getValue() == 0
        && acldelete.getValue() == 0
        && aclexport.getValue() == 0) {
      msgList.add(ALLocalizationUtils.getl10n("ACCESSCTL_ALERT_NO_FEATURE_SELECTED"));
    }

    // 所属メンバー
    if (memberList.size() == 0) {
      msgList.add(ALLocalizationUtils.getl10n("ACCESSCTL_ALERT_NO_MEMBER_SELECTED"));
    } else {
      try {
        // 同一機能の他ロールには所属できないようにする

        List<Integer> uids = new ArrayList<Integer>();
        int msize = memberList.size();
        for (int i = 0; i < msize; i++) {
          ALEipUser user = memberList.get(i);
          uids.add(Integer.valueOf((int) user.getUserId().getValue()));
        }

        SelectQuery<EipTAclRole> rolequery = Database.query(EipTAclRole.class);
        Expression exp11 =
            ExpressionFactory.matchDbExp(
                EipTAclRole.EIP_TACL_PORTLET_FEATURE_PROPERTY
                    + "."
                    + EipTAclPortletFeature.FEATURE_ID_PK_COLUMN,
                Integer.valueOf((int) feature_id.getValue()));
        Expression exp12 =
            ExpressionFactory.inDbExp(
                EipTAclRole.EIP_TACL_USER_ROLE_MAPS_PROPERTY
                    + "."
                    + EipTAclUserRoleMap.TURBINE_USER_PROPERTY
                    + "."
                    + TurbineUser.USER_ID_PK_COLUMN,
                uids);
        rolequery.setQualifier(exp11.andExp(exp12));

        if (ALEipConstants.MODE_UPDATE.equals(getMode())) {
          Expression exp13 =
              ExpressionFactory.noMatchDbExp(
                  EipTAclRole.ROLE_ID_PK_COLUMN, Integer.valueOf(acl_role_id));
          rolequery.andQualifier(exp13);
        }

        List<EipTAclRole> roleList = rolequery.fetchList();
        if (roleList != null && roleList.size() != 0) {
          msgList.add(ALLocalizationUtils.getl10n("ACCESSCTL_ALERT_OTHER_ROLE"));
        }
      } catch (Exception ex) {
        logger.error("AccessControlFormData.validate", ex);
        return false;
      }
    }

    return (msgList.size() == 0);
  }
  /**
   * @param record
   * @return
   * @throws ALPageNotFoundException
   * @throws ALDBErrorException
   */
  @Override
  protected Object getResultData(VEipTScheduleList record)
      throws ALPageNotFoundException, ALDBErrorException {
    ScheduleOnedayResultData rd = new ScheduleOnedayResultData();
    rd.initField();
    try {
      if ("R".equals(record.getStatus())) {
        return rd;
      }
      if (!ScheduleUtils.isView(
          getViewDate(), record.getRepeatPattern(), record.getStartDate(), record.getEndDate())) {
        return rd;
      }

      boolean is_member = record.isMember();

      // Dummy スケジュールではない
      // 完全に隠す
      // 自ユーザー以外
      // 共有メンバーではない
      // オーナーではない
      if ((!"D".equals(record.getStatus()))
          && "P".equals(record.getPublicFlag())
          && (userid != record.getUserId().intValue())
          && (userid != record.getOwnerId().intValue())
          && !is_member) {
        return rd;
      } else if (!hasAclviewOther && !is_member) { // 閲覧権限がなく、グループでもない
        return rd;
      }
      if ("C".equals(record.getPublicFlag())
          && (userid != record.getUserId().intValue())
          && (userid != record.getOwnerId().intValue())
          && !is_member) {
        rd.setName(ALLocalizationUtils.getl10n("SCHEDULE_CLOSE_PUBLIC_WORD"));
        // 仮スケジュールかどうか
        rd.setTmpreserve(false);
      } else {
        rd.setName(record.getName());
        // 仮スケジュールかどうか
        rd.setTmpreserve("T".equals(record.getStatus()));
      }
      // ID
      rd.setScheduleId(record.getScheduleId().intValue());
      // 親スケジュール ID
      rd.setParentId(record.getParentId().intValue());
      // 開始日時
      rd.setStartDate(record.getStartDate());
      // 終了日時
      rd.setEndDate(record.getEndDate());
      // 公開するかどうか
      rd.setPublic("O".equals(record.getPublicFlag()));
      // 非表示にするかどうか
      rd.setHidden("P".equals(record.getPublicFlag()));
      // ダミーか
      rd.setDummy("D".equals(record.getStatus()));
      // ログインユーザかどうか
      rd.setLoginuser(record.getUserId().intValue() == userid);
      // オーナーかどうか
      rd.setOwner(record.getOwnerId().intValue() == userid);
      // 共有メンバーかどうか
      rd.setMember(is_member);
      // 繰り返しパターン
      rd.setPattern(record.getRepeatPattern());

      // ユーザもしくは設備のコンテナを取得する.
      ScheduleOnedayContainer con = null;
      if (ScheduleUtils.SCHEDULEMAP_TYPE_USER.equals(record.getType())) {
        con = map.get(record.getUserId());
      } else {
        // if (ScheduleUtils.SCHEDULEMAP_TYPE_FACILITY.equals(record.getType()))
        // の場合
        con = facilitymap.get(record.getUserId());
      }

      // 期間スケジュールの場合
      if (rd.getPattern().equals("S")) {
        is_hasspan = true;
        List<ScheduleOnedayResultData> terms = termmap.get(record.getUserId());
        if (terms != null) {
          // 期間スケジュールを格納
          terms.add(rd);
        }

        return rd;
      }

      if (!rd.getPattern().equals("N")) {
        // 繰り返しスケジュール
        if (!ScheduleUtils.isView(
            getViewDate(),
            rd.getPattern(),
            rd.getStartDate().getValue(),
            rd.getEndDate().getValue())) {
          return rd;
        }
        rd.setRepeat(true);
      }
      con.addResultData(rd, startHour, endHour, getViewDate());
    } catch (Exception e) {
      logger.error("schedule", e);
      return null;
    }
    return rd;
  }