001package org.vishia.guiBzr; 002 003import java.io.File; 004import java.util.Map; 005import java.util.TreeMap; 006 007import org.vishia.gral.ifc.GralUserAction; 008 009/**This class contains or refers all data of a project. 010 * A project is a software project which contains one or more archives of sources. 011 * Each source-file-bundle with its archive presents a component and 012 * it is arranged in a sub directory of the project folder. 013 * 014 * @author Hartmut Schorrig 015 * 016 */ 017public class DataProject 018{ 019 020 String sPrjPath; 021 022 /**The project path in the current file system. */ 023 File filePrjPath; 024 025 /**All components in this project. The key is the local path from the project folder 026 * to the folder, where the source archive (.bzr or .git) is arranged. 027 * The key is the same like {@link DataCmpn#sNameCmpn}. 028 */ 029 private Map<String, DataCmpn> indexCmpn = new TreeMap<String, DataCmpn>(); 030 031 /**All source components in this project. It will be ascertained while [refresh] button is pressed 032 * on the select panel. See {@link GuiStatusPanel#refreshProjectBzrComponents} 033 */ 034 DataCmpn[] data; 035 036 /**ix while initialize the data. At last number of data -1 (last index). */ 037 private int ixDataInit; 038 039 DataProject(String sPrjPath) 040 { this.sPrjPath = sPrjPath; 041 this.filePrjPath = new File(sPrjPath); 042 //assert(filePrjPath.exists() && filePrjPath.isDirectory()); 043 } 044 045 /**Initializes newly. It is called on refresh. 046 * @param nrofSwArchives 047 */ 048 void init(int nrofSwArchives) 049 { 050 data = new DataCmpn[nrofSwArchives]; 051 indexCmpn.clear(); 052 ixDataInit = -1; 053 } 054 055 /**Creates one component. 056 * @param dirComponent The folder where the source archive (.bzr, .git file) is found. 057 * @return index of current component in {@link #data} 058 */ 059 int createComponentsData(File dirComponent) 060 { 061 DataCmpn data1 = new DataCmpn(dirComponent,null, null); 062 indexCmpn.put(data1.sNameCmpn, data1); 063 data[++ixDataInit] = data1; 064 return ixDataInit; 065 } 066 067 068 069 /**Searches a component. 070 * @param sName The local folder path inside the software project to the components folder. 071 * @return null if it isn't found. 072 */ 073 DataCmpn selectComponent(String sName) 074 { 075 DataCmpn data = indexCmpn.get(sName); 076 return data; 077 } 078 079}