/* * file: ProjectField.java * author: Jon Iles * copyright: (c) Packwood Software 2015 * date: 22/03/2015 */ /* * 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; import java.util.EnumSet; import java.util.Locale; /** * Instances of this type represent project properties. */ public enum ProjectField implements FieldType { START_DATE(DataType.DATE), // Must always be first value CURRENCY_SYMBOL(DataType.STRING), CURRENCY_SYMBOL_POSITION(DataType.CURRENCY_SYMBOL_POSITION), CURRENCY_DIGITS(DataType.INTEGER), THOUSANDS_SEPARATOR(DataType.CHAR), DECIMAL_SEPARATOR(DataType.CHAR), DEFAULT_DURATION_UNITS(DataType.TIME_UNITS), DEFAULT_DURATION_IS_FIXED(DataType.BOOLEAN), DEFAULT_WORK_UNITS(DataType.TIME_UNITS), DEFAULT_STANDARD_RATE(DataType.RATE), DEFAULT_OVERTIME_RATE(DataType.RATE), UPDATING_TASK_STATUS_UPDATES_RESOURCE_STATUS(DataType.BOOLEAN), SPLIT_IN_PROGRESS_TASKS(DataType.BOOLEAN), DATE_ORDER(DataType.DATE_ORDER), TIME_FORMAT(DataType.PROJECT_TIME_FORMAT), DEFAULT_START_TIME(DataType.DATE), DATE_SEPARATOR(DataType.CHAR), TIME_SEPARATOR(DataType.CHAR), AM_TEXT(DataType.STRING), PM_TEXT(DataType.STRING), DATE_FORMAT(DataType.PROJECT_DATE_FORMAT), BAR_TEXT_DATE_FORMAT(DataType.PROJECT_DATE_FORMAT), PROJECT_TITLE(DataType.STRING), COMPANY(DataType.STRING), MANAGER(DataType.STRING), DEFAULT_CALENDAR_NAME(DataType.STRING), SCHEDULE_FROM(DataType.SCHEDULE_FROM), CURRENT_DATE(DataType.DATE), COMMENTS(DataType.STRING), COST(DataType.CURRENCY), BASELINE_COST(DataType.CURRENCY), ACTUAL_COST(DataType.CURRENCY), WORK(DataType.WORK), BASELINE_WORK(DataType.WORK), ACTUAL_WORK(DataType.WORK), WORK2(DataType.NUMERIC), DURATION(DataType.DURATION), BASELINE_DURATION(DataType.DURATION), ACTUAL_DURATION(DataType.DURATION), PERCENTAGE_COMPLETE(DataType.PERCENTAGE), BASELINE_START(DataType.DATE), BASELINE_FINISH(DataType.DATE), ACTUAL_START(DataType.DATE), ACTUAL_FINISH(DataType.DATE), START_VARIANCE(DataType.DURATION), FINISH_VARIANCE(DataType.DURATION), SUBJECT(DataType.STRING), AUTHOR(DataType.STRING), KEYWORDS(DataType.STRING), HYPERLINK_BASE(DataType.STRING), DEFAULT_END_TIME(DataType.DATE), PROJECT_EXTERNALLY_EDITED(DataType.BOOLEAN), CATEGORY(DataType.STRING), MINUTES_PER_DAY(DataType.INTEGER), DAYS_PER_MONTH(DataType.INTEGER), MINUTES_PER_WEEK(DataType.INTEGER), FISCAL_YEAR_START(DataType.BOOLEAN), DEFAULT_TASK_EARNED_VALUE_METHOD(DataType.EARNED_VALUE_METHOD), REMOVE_FILE_PROPERTIES(DataType.BOOLEAN), MOVE_COMPLETED_ENDS_BACK(DataType.BOOLEAN), NEW_TASKS_ESTIMATED(DataType.BOOLEAN), SPREAD_ACTUAL_COST(DataType.BOOLEAN), MULTIPLE_CRITICAL_PATHS(DataType.BOOLEAN), AUTO_ADD_NEW_RESOURCES_AND_TASKS(DataType.BOOLEAN), LAST_SAVED(DataType.DATE), STATUS_DATE(DataType.DATE), MOVE_REMAINING_STARTS_BACK(DataType.BOOLEAN), AUTO_LINK(DataType.BOOLEAN), MICROSOFT_PROJECT_SERVER_URL(DataType.BOOLEAN), HONOR_CONSTRAINTS(DataType.BOOLEAN), ADMIN_PROJECT(DataType.BOOLEAN), INSERTED_PROJECTS_LIKE_SUMMARY(DataType.BOOLEAN), NAME(DataType.STRING), SPREAD_PERCENT_COMPLETE(DataType.BOOLEAN), MOVE_COMPLETED_ENDS_FORWARD(DataType.BOOLEAN), EDITABLE_ACTUAL_COSTS(DataType.BOOLEAN), UNIQUE_ID(DataType.STRING), REVISION(DataType.INTEGER), NEW_TASKS_EFFORT_DRIVEN(DataType.BOOLEAN), MOVE_REMAINING_STARTS_FORWARD(DataType.BOOLEAN), ACTUALS_IN_SYNC(DataType.BOOLEAN), DEFAULT_TASK_TYPE(DataType.TASK_TYPE), EARNED_VALUE_METHOD(DataType.EARNED_VALUE_METHOD), CREATION_DATE(DataType.DATE), EXTENDED_CREATION_DATE(DataType.DATE), DEFAULT_FIXED_COST_ACCRUAL(DataType.ACCRUE), CRITICAL_SLACK_LIMIT(DataType.INTEGER), BASELINE_FOR_EARNED_VALUE(DataType.INTEGER), FISCAL_YEAR_START_MONTH(DataType.INTEGER), NEW_TASK_START_IS_PROJECT_START(DataType.BOOLEAN), WEEK_START_DAY(DataType.DAY), CALCULATE_MULTIPLE_CRITICAL_PATHS(DataType.BOOLEAN), CUSTOM_PROPERTIES(DataType.MAP), CURRENCY_CODE(DataType.STRING), SHOW_PROJECT_SUMMARY_TASK(DataType.BOOLEAN), BASELINE_DATE(DataType.DATE), BASELINE1_DATE(DataType.DATE), BASELINE2_DATE(DataType.DATE), BASELINE3_DATE(DataType.DATE), BASELINE4_DATE(DataType.DATE), BASELINE5_DATE(DataType.DATE), BASELINE6_DATE(DataType.DATE), BASELINE7_DATE(DataType.DATE), BASELINE8_DATE(DataType.DATE), BASELINE9_DATE(DataType.DATE), BASELINE10_DATE(DataType.DATE), TEMPLATE(DataType.STRING), LAST_AUTHOR(DataType.STRING), LASTPRINTED(DataType.DATE), SHORT_APPLICATION_NAME(DataType.STRING), EDITING_TIME(DataType.INTEGER), PRESENTATION_FORMAT(DataType.STRING), CONTENT_TYPE(DataType.STRING), CONTENT_STATUS(DataType.STRING), LANGUAGE(DataType.STRING), DOCUMENT_VERSION(DataType.STRING), MPX_DELIMITER(DataType.CHAR), MPX_PROGRAM_NAME(DataType.STRING), MPX_FILE_VERSION(DataType.MPX_FILE_VERSION), MPX_CODE_PAGE(DataType.MPX_CODE_PAGE), PROJECT_FILE_PATH(DataType.STRING), FULL_APPLICATION_NAME(DataType.STRING), APPLICATION_VERSION(DataType.INTEGER), MPP_FILE_TYPE(DataType.INTEGER), AUTOFILTER(DataType.BOOLEAN), FINISH_DATE(DataType.DATE); // Must always be last value /** * Constructor. * * @param dataType field data type * @param unitsType field units type */ private ProjectField(DataType dataType, FieldType unitsType) { m_dataType = dataType; m_unitsType = unitsType; } /** * Constructor. * * @param dataType field data type */ private ProjectField(DataType dataType) { this(dataType, null); } /** * {@inheritDoc} */ @Override public FieldTypeClass getFieldTypeClass() { return FieldTypeClass.PROJECT; } /** * {@inheritDoc} */ @Override public String getName() { return (getName(Locale.ENGLISH)); } /** * {@inheritDoc} */ @Override public String getName(Locale locale) { String[] titles = LocaleData.getStringArray(locale, LocaleData.PROJECT_COLUMNS); String result = null; if (m_value >= 0 && m_value < titles.length) { result = titles[m_value]; } return (result); } /** * {@inheritDoc} */ @Override public int getValue() { return (m_value); } /** * {@inheritDoc} */ @Override public DataType getDataType() { return (m_dataType); } /** * {@inheritDoc} */ @Override public FieldType getUnitsType() { return m_unitsType; } /** * Retrieves the string representation of this instance. * * @return string representation */ @Override public String toString() { return (getName()); } /** * This method takes the integer enumeration of a property field * and returns an appropriate class instance. * * @param type integer property field enumeration * @return PropertyField instance */ public static ProjectField getInstance(int type) { ProjectField result = null; if (type >= 0 && type < MAX_VALUE) { result = TYPE_VALUES[type]; } return (result); } public static final int MAX_VALUE = EnumSet.allOf(ProjectField.class).size(); private static final ProjectField[] TYPE_VALUES = new ProjectField[MAX_VALUE]; static { int value = 0; for (ProjectField e : EnumSet.allOf(ProjectField.class)) { e.m_value = value++; TYPE_VALUES[e.getValue()] = e; } } private int m_value; private DataType m_dataType; private FieldType m_unitsType; }