package husacct.analyse;
import java.util.HashSet;
import java.util.List;
import javax.swing.JInternalFrame;
import org.jdom2.Element;
import husacct.analyse.task.reconstruct.dto.ReconstructArchitectureDTO;
import husacct.common.dto.AnalysisStatisticsDTO;
import husacct.common.dto.ApplicationDTO;
import husacct.common.dto.DependencyDTO;
import husacct.common.dto.ProjectDTO;
import husacct.common.dto.SoftwareUnitDTO;
import husacct.common.dto.UmlLinkDTO;
import husacct.common.savechain.ISaveable;
import husacct.common.services.IObservableService;
public interface IAnalyseService extends IObservableService, ISaveable {
public String[] getAvailableLanguages();
public void analyseApplication(ProjectDTO project);
public boolean isAnalysed();
public JInternalFrame getJInternalFrame();
public JInternalFrame getJInternalSARFrame();
/** Returns unique names of all types (classes, interfaces, inner classes) of SoftwareUnit with uniqueName */
public List<String> getAllPhysicalClassPathsOfSoftwareUnit(String uniqueName);
/** Returns unique names of all subpackages of the SoftwareUnit with uniqueName */
public List<String> getAllPhysicalPackagePathsOfSoftwareUnit(String uniqueName);
/** Returns an array of dependencies between the analyzed units pathFrom and pathTo and all their siblings; a path may refer to a package too.
* Relatively fast function, based on HashMap. At least one of the argument must match with an analysedModule.
*/
public DependencyDTO[] getDependenciesFromSoftwareUnitToSoftwareUnit(String pathFrom, String pathTo);
/** Returns all dependencies for the exact match from classPathFrom and classPathTo. Fast function, based on HashMap.
* Either classPathTFrom or classPathTo should refer to a class or library class and have a value other than "", otherwise an empty array is returned.
* If classPathTFrom = "", then all dependencies to classPathTo are returned, which refer to existing classPathFrom's.
* If classPathTo = "", then all dependencies from classPathFrom are returned, which refer to existing classPathTo's.
*/
public DependencyDTO[] getDependenciesFromClassToClass(String classPathFrom, String classPathTo);
/** Returns an array of the dependencies, of the dependency types Access, Call, and References only, between the analyzed units pathFrom and pathTo and all their siblings; a path may refer to a package too.
* Relatively fast function, based on HashMap. At least one of the argument must match with an analysedModule.
*/
public DependencyDTO[] getDependencies_OnlyAccessCallAndReferences_FromSoftwareUnitToSoftwareUnit(String pathFrom, String pathTo);
/** Returns the dependencies, of the dependency types Access, Call, and References only, for the exact match from classPathFrom and classPathTo.
* Fast function, based on HashMap.
* Either classPathTFrom or classPathTo should refer to a class or library class and have a value other than "", otherwise an empty array is returned.
* If classPathTFrom = "", then all dependencies to classPathTo are returned, which refer to existing classPathFrom's.
* If classPathTo = "", then all dependencies from classPathFrom are returned, which refer to existing classPathTo's.
*/
public DependencyDTO[] getDependencies_OnlyAccessCallAndReferences_FromClassToClass(String classPathFrom, String classPathTo);
public SoftwareUnitDTO getSoftwareUnitByUniqueName(String uniquename);
public String getSourceFilePathOfClass(String uniquename);
public SoftwareUnitDTO[] getSoftwareUnitsInRoot();
public SoftwareUnitDTO[] getChildUnitsOfSoftwareUnit(String from);
public SoftwareUnitDTO getParentUnitOfSoftwareUnit(String child);
public void createDependencyReport(String fullPath);
public void reconstructArchitecture_Initiate();
public boolean reconstructArchitecture_Execute(ReconstructArchitectureDTO dto);
public void reconstructArchitecture_ClearAll();
public Element exportAnalysisModel();
public void importAnalysisModel(Element analyseElement);
public void logHistory(ApplicationDTO applicationDTO, String workspaceName);
/** If selectedModule == null, statistics of the whole application are returned; otherwise statistics of the selectedModule only are returned. */
public AnalysisStatisticsDTO getAnalysisStatistics(SoftwareUnitDTO selectedModule);
/** Returns all the UML-Links going from the fromClass to another FamixClass or FamixLibrary.
* fromClass must be a unique name of a FamixClass (not of an FamixLibrary (starting with "xLibraries.").
*/
public HashSet<UmlLinkDTO> getUmlLinksFromClassToOtherClasses(String fromClass);
/** Returns all the UML-Links going from the fromClass to the specific toClass.
* fromClass and toClass must both be a unique name of FamixClass, or (in case of toClass) FamixLibrary (include "xLibraries.").
* */
public UmlLinkDTO[] getUmlLinksFromClassToToClass(String fromClass, String toClass);
/** Returns an array of all umlLinks (enclosed in UmlLinkDTOs)between the analyzed units pathFrom and pathTo and all their siblings; a path may refer to a package too.
* Relatively fast function, based on HashMap. Both argument must match with an analysedModule.
*/
public UmlLinkDTO[] getUmlLinksFromSoftwareUnitToSoftwareUnit(String pathFrom, String pathTo);
}