Ejemplo n.º 1
0
 /**
  * 根据解析结果设置数据源与真实表名称
  *
  * @param sqlStruct
  * @param sqlInfo
  * @throws SQLException
  */
 private void parsePartition(SQLStruct sqlStruct, SQLInfo sqlInfo) throws SQLException {
   DALCustomInfo dalCustomInfo = DALCurrentStatus.getCustomInfo();
   DALFactory dalFactory = DALFactory.getDefault();
   ParsedTableInfo parsedTableInfo = new ParsedTableInfo();
   boolean hasParser = true;
   if (sqlStruct.isCanParse()) {
     if (dalCustomInfo == null) {
       ConnectionStatus connectionStatus = new ConnectionStatus();
       connectionStatus.setAutoCommit(this.dalConnection.getAutoCommit());
       connectionStatus.setReadOnly(this.dalConnection.isReadOnly());
       PartitionParser parser;
       PartitionTableInfo partitionTableInfo = null;
       for (String table : sqlStruct.getTableNames()) {
         parser = dalFactory.getPartitionParserFactory().getParser(table);
         if (parser == null) {
           hasParser = false;
         } else {
           // 存在解析器时,进行解析
           partitionTableInfo = parser.parse(table, sqlInfo, connectionStatus);
           if (partitionTableInfo == null) {
             throw new DALRunTimeException(
                 "partitionTableInfo return from "
                     + parser.getClass().getName()
                     + " can not be null : "
                     + table);
           }
           parsedTableInfo.setRealTable(table, partitionTableInfo.getRealTable());
         }
       }
       // 如果不需要解析路由,就设置默认数据源
       if (partitionTableInfo == null) {
         //					DALCurrentStatus.setDefaultDsKey();
       }
       // 设置解析后的数据源
       else {
         DALCurrentStatus.setDsKey(partitionTableInfo.getDsName());
       }
     }
     // 通过代码指定数据源与表名称,进行设定
     else {
       for (String table : sqlStruct.getTableNames()) {
         parsedTableInfo.setRealTable(table, dalCustomInfo.getRealTable(table));
       }
       DALCurrentStatus.setDsKey(dalCustomInfo.getDsKey());
     }
     // 在有进行解析的条件下,获得解析后指定表的sql语句
     if (hasParser) {
       this.sql = dalFactory.getSqlAnalyzer().outPutSQL(sql, sqlStruct, sqlInfo, parsedTableInfo);
     }
   } else {
     // 当不需要进行解析时,什么也不做,直接使用上一次使用的解析结果
   }
 }
Ejemplo n.º 2
0
  public static ConnectionStatus getConnectionStatusStr(String value) {

    for (ConnectionStatus connectionStatus : ConnectionStatus.values()) {
      if (value.equals(connectionStatus.valueStr)) return connectionStatus;
    }
    return CONNECTION_FAILURE;
  }
Ejemplo n.º 3
0
  public static synchronized void updateStateString(
      String state, String msg, int resid, ConnectionStatus level) {
    // Workound for OpenVPN doing AUTH and wait and being connected
    // Simply ignore these state
    if (mLastLevel == ConnectionStatus.LEVEL_CONNECTED
        && (state.equals("WAIT") || state.equals("AUTH"))) {
      newLogItem(
          new LogItem(
              (LogLevel.DEBUG),
              String.format(
                  "Ignoring OpenVPN Status in CONNECTED state (%s->%s): %s",
                  state, level.toString(), msg)));
      return;
    }

    mLaststate = state;
    mLaststatemsg = msg;
    mLastStateresid = resid;
    mLastLevel = level;

    for (StateListener sl : stateListener) {
      sl.updateState(state, msg, resid, level);
    }
    // newLogItem(new LogItem((LogLevel.DEBUG), String.format("New OpenVPN Status (%s->%s):
    // %s",state,level.toString(),msg)));
  }
Ejemplo n.º 4
0
  public void verifyUser(FinishedCallback callback, ConnectionStatus connectionStatus) {

    if (connectionStatus != null && !connectionStatus.isOnline()) {
      if (callback != null) {
        callback.finished(
            new TwitterFetchResult(false, connectionStatus.getErrorMessageNoConnection()), null);
      }
      return;
    }

    mFinishedCallbackMap.put(mFetchUserCallbackHandle, callback);
    new FetchUserTask()
        .execute(
            AsyncTaskEx.PRIORITY_HIGH,
            "Validate User",
            new FetchUserTaskInput(mFetchUserCallbackHandle, connectionStatus));
    mFetchUserCallbackHandle += 1;
  }
Ejemplo n.º 5
0
  private void trigger(Long userId, FinishedCallback callback, ConnectionStatus connectionStatus) {

    if (connectionStatus != null && !connectionStatus.isOnline()) {
      if (callback != null) {
        callback.finished(
            new TwitterFetchResult(false, connectionStatus.getErrorMessageNoConnection()), null);
      }
      return;
    }

    assert (!mFinishedCallbackMap.containsValue(callback));

    mFinishedCallbackMap.put(mFetchUserCallbackHandle, callback);
    new FetchUserTask()
        .execute(
            AsyncTaskEx.PRIORITY_HIGH,
            "Fetch User",
            new FetchUserTaskInput(userId, mFetchUserCallbackHandle, connectionStatus));

    mFetchUserCallbackHandle += 1;
  }