code: public ProjectFile read() throws MPXJException
     {
        try
        {
           m_reader = new PrimaveraReader(m_taskUdfCounters, m_resourceUdfCounters, m_assignmentUdfCounters, m_resourceFields, m_wbsFields, m_taskFields, m_assignmentFields, m_aliases, m_matchPrimaveraWBS);
           ProjectFile project = m_reader.getProject();
           project.getEventManager().addProjectListeners(m_projectListeners);
  
           processAnalytics();
           processProjectProperties();
           processActivityCodes();
           processUserDefinedFields();
           processCalendars();
           processResources();
           processResourceRates();
           processTasks();
           processPredecessors();
           processAssignments();
  
           m_reader = null;
           project.updateStructure();
  
           return (project);
        }
  
        catch (SQLException ex)
        {
           throw new MPXJException(MPXJException.READ_ERROR, ex);
        }
  
        finally
        {
           if (m_allocatedConnection && m_connection != null)
           {
              try
              {
                 m_connection.close();
              }
  
              catch (SQLException ex)
              {
                 // silently ignore errors on close
              }
  
              m_connection = null;
           }
        }
     }
docs: Read a project from the current data source.
  
  @return ProjectFile instance
  @throws MPXJException