/* * file: MPXTaskField.java * author: Jon Iles * copyright: (c) Packwood Software 2005 * date: 20-Feb-2006 */ /* * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation; either version 2.1 of the License, or (at your * option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ package net.sf.mpxj.mpx; import net.sf.mpxj.TaskField; /** * Utility class used to map between the integer values held in an MPX file * to represent a task field, and the enumerated type used to represent * task fields in MPXJ. */ final class MPXTaskField { /** * Retrieve an instance of the TaskField class based on the data read from an * MPX file. * * @param value value from an MS Project file * @return TaskField instance */ public static TaskField getMpxjField(int value) { TaskField result = null; if (value >= 0 && value < MPX_MPXJ_ARRAY.length) { result = MPX_MPXJ_ARRAY[value]; } return (result); } /** * Retrieve the integer value used to represent a task field in an * MPX file. * * @param value MPXJ task field value * @return MPX field value */ public static int getMpxField(int value) { int result = 0; if (value >= 0 && value < MPXJ_MPX_ARRAY.length) { result = MPXJ_MPX_ARRAY[value]; } return (result); } public static final int MAX_FIELDS = 153; private static final TaskField[] MPX_MPXJ_ARRAY = new TaskField[MAX_FIELDS]; static { MPX_MPXJ_ARRAY[32] = TaskField.ACTUAL_COST; MPX_MPXJ_ARRAY[42] = TaskField.ACTUAL_DURATION; MPX_MPXJ_ARRAY[59] = TaskField.ACTUAL_FINISH; MPX_MPXJ_ARRAY[58] = TaskField.ACTUAL_START; MPX_MPXJ_ARRAY[22] = TaskField.ACTUAL_WORK; MPX_MPXJ_ARRAY[31] = TaskField.BASELINE_COST; MPX_MPXJ_ARRAY[41] = TaskField.BASELINE_DURATION; MPX_MPXJ_ARRAY[57] = TaskField.BASELINE_FINISH; MPX_MPXJ_ARRAY[56] = TaskField.BASELINE_START; MPX_MPXJ_ARRAY[21] = TaskField.BASELINE_WORK; MPX_MPXJ_ARRAY[86] = TaskField.BCWP; MPX_MPXJ_ARRAY[85] = TaskField.BCWS; MPX_MPXJ_ARRAY[135] = TaskField.CONFIRMED; MPX_MPXJ_ARRAY[68] = TaskField.CONSTRAINT_DATE; MPX_MPXJ_ARRAY[91] = TaskField.CONSTRAINT_TYPE; MPX_MPXJ_ARRAY[15] = TaskField.CONTACT; MPX_MPXJ_ARRAY[30] = TaskField.COST; MPX_MPXJ_ARRAY[34] = TaskField.COST_VARIANCE; MPX_MPXJ_ARRAY[36] = TaskField.COST1; MPX_MPXJ_ARRAY[37] = TaskField.COST2; MPX_MPXJ_ARRAY[38] = TaskField.COST3; MPX_MPXJ_ARRAY[125] = TaskField.CREATED; MPX_MPXJ_ARRAY[82] = TaskField.CRITICAL; MPX_MPXJ_ARRAY[88] = TaskField.CV; MPX_MPXJ_ARRAY[92] = TaskField.LEVELING_DELAY; MPX_MPXJ_ARRAY[40] = TaskField.DURATION; MPX_MPXJ_ARRAY[45] = TaskField.DURATION_VARIANCE; MPX_MPXJ_ARRAY[46] = TaskField.DURATION1; MPX_MPXJ_ARRAY[47] = TaskField.DURATION2; MPX_MPXJ_ARRAY[48] = TaskField.DURATION3; MPX_MPXJ_ARRAY[53] = TaskField.EARLY_FINISH; MPX_MPXJ_ARRAY[52] = TaskField.EARLY_START; MPX_MPXJ_ARRAY[51] = TaskField.FINISH; MPX_MPXJ_ARRAY[67] = TaskField.FINISH_VARIANCE; MPX_MPXJ_ARRAY[61] = TaskField.FINISH1; MPX_MPXJ_ARRAY[63] = TaskField.FINISH2; MPX_MPXJ_ARRAY[65] = TaskField.FINISH3; MPX_MPXJ_ARRAY[127] = TaskField.FINISH4; MPX_MPXJ_ARRAY[129] = TaskField.FINISH5; MPX_MPXJ_ARRAY[35] = TaskField.FIXED_COST; MPX_MPXJ_ARRAY[110] = TaskField.FLAG1; MPX_MPXJ_ARRAY[119] = TaskField.FLAG10; MPX_MPXJ_ARRAY[111] = TaskField.FLAG2; MPX_MPXJ_ARRAY[112] = TaskField.FLAG3; MPX_MPXJ_ARRAY[113] = TaskField.FLAG4; MPX_MPXJ_ARRAY[114] = TaskField.FLAG5; MPX_MPXJ_ARRAY[115] = TaskField.FLAG6; MPX_MPXJ_ARRAY[116] = TaskField.FLAG7; MPX_MPXJ_ARRAY[117] = TaskField.FLAG8; MPX_MPXJ_ARRAY[118] = TaskField.FLAG9; MPX_MPXJ_ARRAY[93] = TaskField.FREE_SLACK; MPX_MPXJ_ARRAY[123] = TaskField.HIDE_BAR; MPX_MPXJ_ARRAY[90] = TaskField.ID; MPX_MPXJ_ARRAY[55] = TaskField.LATE_FINISH; MPX_MPXJ_ARRAY[54] = TaskField.LATE_START; MPX_MPXJ_ARRAY[122] = TaskField.LINKED_FIELDS; MPX_MPXJ_ARRAY[83] = TaskField.MARKED; MPX_MPXJ_ARRAY[81] = TaskField.MILESTONE; MPX_MPXJ_ARRAY[1] = TaskField.NAME; MPX_MPXJ_ARRAY[140] = TaskField.NUMBER1; MPX_MPXJ_ARRAY[141] = TaskField.NUMBER2; MPX_MPXJ_ARRAY[142] = TaskField.NUMBER3; MPX_MPXJ_ARRAY[143] = TaskField.NUMBER4; MPX_MPXJ_ARRAY[144] = TaskField.NUMBER5; MPX_MPXJ_ARRAY[121] = TaskField.OBJECTS; MPX_MPXJ_ARRAY[3] = TaskField.OUTLINE_LEVEL; MPX_MPXJ_ARRAY[99] = TaskField.OUTLINE_NUMBER; MPX_MPXJ_ARRAY[44] = TaskField.PERCENT_COMPLETE; MPX_MPXJ_ARRAY[25] = TaskField.PERCENT_WORK_COMPLETE; MPX_MPXJ_ARRAY[70] = TaskField.PREDECESSORS; MPX_MPXJ_ARRAY[95] = TaskField.PRIORITY; MPX_MPXJ_ARRAY[97] = TaskField.PROJECT; MPX_MPXJ_ARRAY[33] = TaskField.REMAINING_COST; MPX_MPXJ_ARRAY[43] = TaskField.REMAINING_DURATION; MPX_MPXJ_ARRAY[23] = TaskField.REMAINING_WORK; MPX_MPXJ_ARRAY[16] = TaskField.RESOURCE_GROUP; MPX_MPXJ_ARRAY[73] = TaskField.RESOURCE_INITIALS; MPX_MPXJ_ARRAY[72] = TaskField.RESOURCE_NAMES; MPX_MPXJ_ARRAY[151] = TaskField.RESUME; MPX_MPXJ_ARRAY[152] = TaskField.RESUME; MPX_MPXJ_ARRAY[84] = TaskField.ROLLUP; MPX_MPXJ_ARRAY[50] = TaskField.START; MPX_MPXJ_ARRAY[66] = TaskField.START_VARIANCE; MPX_MPXJ_ARRAY[60] = TaskField.START1; MPX_MPXJ_ARRAY[62] = TaskField.START2; MPX_MPXJ_ARRAY[64] = TaskField.START3; MPX_MPXJ_ARRAY[126] = TaskField.START4; MPX_MPXJ_ARRAY[128] = TaskField.START5; MPX_MPXJ_ARRAY[150] = TaskField.STOP; MPX_MPXJ_ARRAY[96] = TaskField.SUBPROJECT_FILE; MPX_MPXJ_ARRAY[120] = TaskField.SUMMARY; MPX_MPXJ_ARRAY[87] = TaskField.SV; MPX_MPXJ_ARRAY[4] = TaskField.TEXT1; MPX_MPXJ_ARRAY[13] = TaskField.TEXT10; MPX_MPXJ_ARRAY[5] = TaskField.TEXT2; MPX_MPXJ_ARRAY[6] = TaskField.TEXT3; MPX_MPXJ_ARRAY[7] = TaskField.TEXT4; MPX_MPXJ_ARRAY[8] = TaskField.TEXT5; MPX_MPXJ_ARRAY[9] = TaskField.TEXT6; MPX_MPXJ_ARRAY[10] = TaskField.TEXT7; MPX_MPXJ_ARRAY[11] = TaskField.TEXT8; MPX_MPXJ_ARRAY[12] = TaskField.TEXT9; MPX_MPXJ_ARRAY[94] = TaskField.TOTAL_SLACK; MPX_MPXJ_ARRAY[80] = TaskField.TYPE; MPX_MPXJ_ARRAY[98] = TaskField.UNIQUE_ID; MPX_MPXJ_ARRAY[74] = TaskField.UNIQUE_ID_PREDECESSORS; MPX_MPXJ_ARRAY[75] = TaskField.UNIQUE_ID_SUCCESSORS; MPX_MPXJ_ARRAY[136] = TaskField.UPDATE_NEEDED; MPX_MPXJ_ARRAY[2] = TaskField.WBS; MPX_MPXJ_ARRAY[20] = TaskField.WORK; MPX_MPXJ_ARRAY[24] = TaskField.WORK_VARIANCE; } private static final int[] MPXJ_MPX_ARRAY = new int[TaskField.MAX_VALUE]; static { for (int loop = 0; loop < MPX_MPXJ_ARRAY.length; loop++) { TaskField field = MPX_MPXJ_ARRAY[loop]; if (field != null) { MPXJ_MPX_ARRAY[field.getValue()] = loop; } } MPXJ_MPX_ARRAY[TaskField.SUCCESSORS.getValue()] = 71; } }