/** @file
This file is to define  PackageIdentification class.

Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution.  The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/

package org.tianocore.build.id;
import java.io.File;

import org.tianocore.build.global.GlobalData;

/**
  This class is used to identify a package. 

  @since GenBuild 1.0
**/
public class PackageIdentification extends Identification{
    
    //
    // SPD file
    //
    private File spdFile;
    
    /**
      @param guid Guid
      @param version Version
    **/
    public PackageIdentification(String guid, String version){
        super(guid, version);
    }
    
    /**
      @param name Name
      @param guid Guid
      @param version Version
    **/
    public PackageIdentification(String name, String guid, String version){
        super(name, guid, version);
    }
    
    /**
      @param name Name
      @param guid Guid
      @param version Version
      @param spdFilename SPD file name
    **/
    public PackageIdentification(String name, String guid, String version, String spdFilename){
        super(name, guid, version);
        this.spdFile = new File(spdFilename);
    }
    
    /**
      @param name Name
      @param guid Guid
      @param version Version
      @param spdFile SPD file
    **/
    public PackageIdentification(String name, String guid, String version, File spdFile){
        super(name, guid, version);
        this.spdFile = spdFile;
    }
    
    /**
      set SPD file.
      @param spdFile SPD file
    **/
    public void setSpdFile(File spdFile) {
        this.spdFile = spdFile;
    }

    /**
      get SPD file
      @return SPD file
    **/
    public File getSpdFile() {
        return spdFile;
    }

    public String toString(){
        if (version == null || version.trim().equalsIgnoreCase("")) {
            return "package [" + name + "]";
        }
        else {
            return "package [" + name + " " + version + "]";
        }
    }
    
    /**
      get package directory
      @return Package Directory
    **/
    public String getPackageDir(){
        return spdFile.getParent();
    }
    
    /**
      get package relative directory. 
      @return package relative directory
    **/
    public String getPackageRelativeDir(){
        String relativeDir =spdFile.getParent().substring(GlobalData.getWorkspacePath().length());
        if(relativeDir.startsWith("\\") || relativeDir.startsWith("/")) {
          relativeDir = relativeDir.substring(1);
        }
        return relativeDir;
    }
    
    public String getName() {
        return name;
    }
}
