Esempio n. 1
0
  @Override
  protected boolean beforeSave(boolean newRecord) {
    AccessSqlParser parser = new AccessSqlParser("SELECT * FROM " + getFromClause());
    TableInfo[] tableInfos = parser.getTableInfo(0);
    if (tableInfos == null || tableInfos.length == 0) {
      log.saveError("ParseFromClauseError", "Failed to parse from clause");
      return false;
    }

    // only one default per table
    if (newRecord || is_ValueChanged("IsDefault")) {
      if (isDefault()) {
        if (newRecord) {
          Query query =
              new Query(
                  getCtx(),
                  MTable.get(getCtx(), Table_ID),
                  "AD_Table_ID=? AND IsDefault='Y' AND AD_Client_ID=?",
                  get_TrxName());
          List<MInfoWindow> list = query.setParameters(getAD_Table_ID(), getAD_Client_ID()).list();
          for (MInfoWindow iw : list) {
            iw.setIsDefault(false);
            iw.saveEx();
          }
        } else {
          Query query =
              new Query(
                  getCtx(),
                  MTable.get(getCtx(), Table_ID),
                  "AD_InfoWindow_ID<>? AND AD_Table_ID=? AND IsDefault='Y' AND AD_Client_ID=?",
                  get_TrxName());
          List<MInfoWindow> list =
              query
                  .setParameters(getAD_InfoWindow_ID(), getAD_Table_ID(), getAD_Client_ID())
                  .list();
          for (MInfoWindow iw : list) {
            iw.setIsDefault(false);
            iw.saveEx();
          }
        }
      }
    }

    // evaluate need valid
    boolean isNeedValid =
        is_new()
            || is_ValueChanged(I_AD_InfoWindow.COLUMNNAME_AD_Table_ID)
            || is_ValueChanged(I_AD_InfoWindow.COLUMNNAME_WhereClause)
            || is_ValueChanged(I_AD_InfoWindow.COLUMNNAME_FromClause)
            || is_ValueChanged(I_AD_InfoWindow.COLUMNNAME_OrderByClause)
            || is_ValueChanged(I_AD_InfoWindow.COLUMNNAME_OtherClause)
            || is_ValueChanged(I_AD_InfoWindow.COLUMNNAME_IsDistinct);

    // valid config
    if (isNeedValid) {
      validate();
    }

    return true;
  }