0

タスクのテーブルを作成し、その内容を操作しようとしています。わからないバグに取り組んでおり、助けてくれてとても感謝しています。質問の長さについてお詫び申し上げますが、可能な限り詳細をお伝えするよう努めています。

クラスtasksRepositoryは、クラスtaskDefで作成されたレコードを配列リストとして格納します。setTask()メソッドとgetTaskメソッドには、ArrayListクラスのadd()メソッドとget()メソッドが含まれています。

taskDefオブジェクトのパラメーターは、ローカルのsetメソッドを使用して作成されます。このような方法の例を次に示します。配信されたパラメータが保存された値と異なる場合、保存された値になり、イベントがログレコードに追加されます。いずれの場合も、成功フラグが再調整されます。

public static Boolean setProjectNumber(String projectNumberI)
{ // All the 
    if (projectNumberI != projectNumber)
    {
        projectNumber = projectNumberI;
        logAccumulator = logAccumulator + "; project number (" + projectNumberI + ")";
    }
    return true;
}

private static void setLog ()
{ // When all the parameters are set, the log parameter is updated with time tag
    String t = formatterFull.format(GregorianCalendar.getInstance().getTime());
    log = log + "\n" + t + ": " + logAccumulator;       
}

クラスtasksTableProcessingには、タスク操作が含まれています。以下にコンストラクターが含まれています。簡単な形で始めましたが、調査中に変更しました。クラスtaskStatusは、文字列を返すENUMです。getLog ()メソッドは単にログフィールドを返します

public tasksTableProcessing () 
{ // constructor. Creates the tableRepository object with test records
    tasksRepository.clearDb ();

    taskDef task = null; 
    task = new taskDef ("P1000", "O1", taskStatus.started (), "1", "false", "false");
    tasksRepository.addTask (task);
    System.out.println("\nLog 0: \n" + tasksRepository.getTask(0).getLog());

    task = null;
    task = new taskDef ("P1000", "O1", taskStatus.started(), "2", "false", "true");
    tasksRepository.addTask (task);
    System.out.println("\nLog 1: \n" + tasksRepository.getTask(1).getLog());

    task = null;
    task = new taskDef ("P2000", "O2", "closed", "63", "true", "false");
    tasksRepository.addTask (task);
    System.out.println("\nLog 2: \n" + tasksRepository.getTask(2).getLog());

    task = null;
    task = new taskDef ("P2000", "O2", "closed", "64", "true", "true");
    tasksRepository.addTask (task);
    System.out.println("\nLog 3: \n" + tasksRepository.getTask(3).getLog());
}

以下はログです。これは、新しいレコードが導入されると、すべての古いレコードが更新されることを示しています。

ログ0:

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み)

ログ1:

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み)

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み); タスク(タスク2); タスクID(2); 配信フラグ(true)

ログ2:

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み)

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み); タスク(タスク2); タスクID(2); 配信フラグ(true)

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み); タスク(タスク2); タスクID(2); 配信フラグ(true); プロジェクト番号(P2000); タスク(タスク63); タスクID(63); 所有者(O2); ステータス(クローズ); クリティカルパス(true); 配信フラグ(false)

ログ3:

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み)

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み); タスク(タスク2); タスクID(2); 配信フラグ(true)

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み); タスク(タスク2); タスクID(2); 配信フラグ(true); プロジェクト番号(P2000); タスク(タスク63); タスクID(63); 所有者(O2); ステータス(クローズ); クリティカルパス(true); 配信フラグ(false)

2012年9月7日10:21:; プロジェクト番号(P1000); タスク(タスク1); タスクID(1); 所有者(O1); ステータス(開始済み); タスク(タスク2); タスクID(2); 配信フラグ(true); プロジェクト番号(P2000); タスク(タスク63); タスクID(63); 所有者(O2); ステータス(クローズ); クリティカルパス(true); 配信フラグ(false); タスク(タスク64); タスクID(64); 配信フラグ(true)

4

1 に答える 1

1

メソッド シグネチャを使用して、TaskDefs のメンバーをインスタンス フィールドではなく静的フィールドとして格納します。静的フィールドは、TaskDef クラス自体のフィールドであり、特定の TaskDef インスタンスのフィールドではありません。

インスタンスとクラス メンバーに関する Java チュートリアルを読んでください。

于 2012-07-09T09:28:52.730 に答える