/*
* This file is part of ReqTracker.
*
* Copyright (C) 2015 Taleh Didover, Florian Gerdes, Dmitry Gorelenkov,
* Rajab Hassan Kaoneka, Katsiaryna Krauchanka, Tobias Polzer,
* Gayathery Sathya, Lukas Tajak
*
* ReqTracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* ReqTracker 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with ReqTracker. If not, see <http://www.gnu.org/licenses/>.
*/
package de.fau.osr.gui.Controller;
import de.fau.osr.gui.Model.DataElements.*;
import de.fau.osr.gui.View.Presenter.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public abstract class Visitor {
Collection<Requirement> requirements = null;
ArrayList<PathDE> filePaths = null;
public void setRequirements(Collection<DataElement> dataelements){
requirements = new ArrayList<Requirement>();
for(DataElement dataelement: dataelements){
requirements.add((Requirement) dataelement);
}
}
public Presenter toPresenter(AnnotatedLine line){
if(requirements == null){
return new Presenter_Impact(line);
}else{
Presenter_AnnotatedLine presenter = new Presenter_AnnotatedLine(line);
presenter.setRequirementID(requirements);
return presenter;
}
}
public Presenter toPresenter(Commit commit){
return new Presenter_Commit(commit);
}
public Presenter toPresenter(CommitFile commitFile){
ArrayList<CommitFile> commitFiles = new ArrayList<CommitFile>();
commitFiles.add(commitFile);
return new Presenter_CommitFile(commitFiles);
}
public Presenter toPresenter(ImpactDE impact) {
if(filePaths != null){
return new Presenter_PathImpact(filePaths, impact);
}else{
return new Presenter_ImpactDE(impact);
}
}
public Presenter toPresenter(PathDE filePath) {
filePaths = new ArrayList<>();
filePaths.add(filePath);
return new Presenter_Path(filePaths);
}
public Presenter toPresenter(Requirement requirement){
return new Presenter_Requirement(requirement);
}
public Collection<? extends DataElement> toDataElement(Presenter_AnnotatedLine line){
ArrayList<DataElement> result = new ArrayList<DataElement>();
result.add(line.getLine());
return result;
}
public Collection<? extends DataElement> toDataElement(Presenter_Commit commit){
ArrayList<DataElement> result = new ArrayList<DataElement>();
result.add(commit.getCommit());
return result;
}
public Collection<? extends DataElement> toDataElement(Presenter_Path filePath){
ArrayList<DataElement> result = new ArrayList<DataElement>();
result.addAll(filePath.getPathDE());
return result;
}
public Collection<? extends DataElement> toDataElement(Presenter_PathImpact filePath){
ArrayList<DataElement> result = new ArrayList<DataElement>();
result.addAll(filePath.getPathDE());
return result;
}
public Collection<? extends DataElement> toDataElement(Presenter_CommitFile commitFile){
ArrayList<DataElement> result = new ArrayList<DataElement>();
result.addAll(commitFile.getCommitFile());
return result;
}
public Collection<? extends DataElement> toDataElement(Presenter_Requirement requirement){
ArrayList<DataElement> result = new ArrayList<DataElement>();
result.add(requirement.getRequirement());
return result;
}
public Collection<? extends DataElement> toDataElement(Presenter_Impact impact){
ArrayList<DataElement> result = new ArrayList<DataElement>();
result.add(impact.getLine());
return result;
}
public Collection<? extends DataElement> toDataElement(
Presenter_ImpactDE presenter_ImpactDE) {
ArrayList<DataElement> result = new ArrayList<DataElement>();
result.add(presenter_ImpactDE.getImpact());
return result;
}
}