All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.mpxj.UnitOfMeasure Maven / Gradle / Ivy

Go to download

Library that provides facilities to allow project information to be manipulated in Java and .Net. Supports a range of data formats: Microsoft Project Exchange (MPX), Microsoft Project (MPP,MPT), Microsoft Project Data Interchange (MSPDI XML), Microsoft Project Database (MPD), Planner (XML), Primavera (PM XML, XER, and database), Asta Powerproject (PP, MDB), Asta Easyplan (PP), Phoenix Project Manager (PPX), FastTrack Schedule (FTS), and the Standard Data Exchange Format (SDEF).

There is a newer version: 13.4.0
Show newest version
/*
 * file:       UnitOfMeasure.java
 * author:     Jon Iles
 * date:       09/10/2023
 */

/*
 * 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;

/**
 * Class representing a unit of measure.
 */
public final class UnitOfMeasure implements ProjectEntityWithUniqueID
{
   /**
    * Constructor.
    *
    * @param builder builder instance
    */
   private UnitOfMeasure(Builder builder)
   {
      m_uniqueID = builder.m_sequenceProvider.getUniqueIdObjectSequence(UnitOfMeasure.class).syncOrGetNext(builder.m_uniqueID);
      m_name = builder.m_name;
      m_abbreviation = builder.m_abbreviation;
      m_sequenceNumber = builder.m_sequenceNumber;
   }

   @Override public Integer getUniqueID()
   {
      return m_uniqueID;
   }

   /**
    * Retrieve the unit of measure name.
    *
    * @return unit of measure name
    */
   public String getName()
   {
      return m_name;
   }

   /**
    * Retrieve the unit of measure abbreviation.
    *
    * @return unit of measure abbreviation
    */
   public String getAbbreviation()
   {
      return m_abbreviation;
   }

   /**
    * Retrieve the unit of measure sequence number.
    *
    * @return sequence number
    */
   public Integer getSequenceNumber()
   {
      return m_sequenceNumber;
   }

   private final Integer m_uniqueID;
   private final String m_name;
   private final String m_abbreviation;
   private final Integer m_sequenceNumber;

   /**
    * Unit of measure builder.
    */
   public static class Builder
   {
      /**
       * Constructor.
       *
       * @param sequenceProvider parent file
       */
      public Builder(UniqueIdObjectSequenceProvider sequenceProvider)
      {
         m_sequenceProvider = sequenceProvider;
      }

      /**
       * Initialise the builder from an existing UnitOfMeasure instance.
       *
       * @param value UnitOfMeasure instance
       * @return builder
       */
      public Builder from(UnitOfMeasure value)
      {
         m_uniqueID = value.m_uniqueID;
         m_name = value.m_name;
         m_abbreviation = value.m_abbreviation;
         m_sequenceNumber = value.m_sequenceNumber;
         return this;
      }

      /**
       * Add the unique ID.
       *
       * @param uniqueID unique ID
       * @return builder
       */
      public Builder uniqueID(Integer uniqueID)
      {
         m_uniqueID = uniqueID;
         return this;
      }

      /**
       * Add the name.
       *
       * @param name name
       * @return builder
       */
      public Builder name(String name)
      {
         m_name = name;
         return this;
      }

      /**
       * Add the abbreviation.
       *
       * @param abbreviation abbreviation
       * @return builder
       */
      public Builder abbreviation(String abbreviation)
      {
         m_abbreviation = abbreviation;
         return this;
      }

      /**
       * Add the sequence number.
       *
       * @param sequenceNumber sequence number
       * @return builder
       */
      public Builder sequenceNumber(Integer sequenceNumber)
      {
         m_sequenceNumber = sequenceNumber;
         return this;
      }

      /**
       * Build a UnitOfMeasure instance.
       *
       * @return UnitOfMeasure instance
       */
      public UnitOfMeasure build()
      {
         return new UnitOfMeasure(this);
      }

      private final UniqueIdObjectSequenceProvider m_sequenceProvider;
      private Integer m_uniqueID;
      private String m_name;
      private String m_abbreviation;
      private Integer m_sequenceNumber;
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy