package br.ufrgs.inf.dsmoura.repository.controller.asset;
import br.ufrgs.inf.dsmoura.repository.controller.search.SearchMB;
import br.ufrgs.inf.dsmoura.repository.controller.util.JSFUtil;
import br.ufrgs.inf.dsmoura.repository.model.dao.AssetDAO;
import br.ufrgs.inf.dsmoura.repository.model.entity.Asset;
import br.ufrgs.inf.dsmoura.repository.model.entity.RelatedAsset;
public class RelatedAssetsMB {
private AssetMB assetMB;
private RelatedAsset relatedAssetAux;
private String relatedAssetIDMessage;
private String relatedAssetNameMessage;
private String relatedAssetVersionMessage;
private String relatedAssetReferenceMessage;
private String relatedAssetTypeMessage;
public RelatedAssetsMB(AssetMB assetMB) {
this.assetMB = assetMB;
this.initMB();
}
public Asset getDTO() {
return this.assetMB.getAsset();
}
private void initMB() {
relatedAssetAux = new RelatedAsset();
SearchMB searchMB = JSFUtil.findBean("searchMB");
if (searchMB != null) {
searchMB.clearSuggestedAssetsList();
}
}
public String addRelatedAsset() {
if(!this.validation()) {
getDTO().getRelatedAssets().add( relatedAssetAux );
relatedAssetAux = new RelatedAsset();
this.loadSuggestedAssets();
}
return "";
}
private boolean validation() {
relatedAssetIDMessage = "";
relatedAssetNameMessage = "";
relatedAssetVersionMessage = "";
relatedAssetReferenceMessage = "";
relatedAssetTypeMessage = "";
boolean containsError = false;
if ((relatedAssetAux.getId() == null) ||
(relatedAssetAux.getId().trim().length() == 0)) {
containsError = true;
relatedAssetIDMessage = "Enter the ID.";
}
if ((relatedAssetAux.getName() == null) ||
relatedAssetAux.getName().trim().length() == 0) {
containsError = true;
relatedAssetNameMessage = "Enter the Name.";
}
if ((relatedAssetAux.getVersion() == null) ||
relatedAssetAux.getVersion().trim().length() == 0) {
containsError = true;
relatedAssetVersionMessage = "Enter the Version.";
}
if ((relatedAssetAux.getReference() == null) ||
relatedAssetAux.getReference().trim().length() == 0) {
containsError = true;
relatedAssetReferenceMessage = "Enter the Reference.";
}
if ((relatedAssetAux.getRelatedAssetTypeDTO() == null) ||
(relatedAssetAux.getRelatedAssetTypeDTO().getRelatedassettypePk() == null)) {
containsError = true;
relatedAssetTypeMessage = "Enter the Type.";
}
return containsError;
}
public String validate() {
if (relatedAssetAux != null) {
if (relatedAssetAux.getId().trim().length() > 0 ||
relatedAssetAux.getName().trim().length() > 0 ||
relatedAssetAux.getVersion().trim().length() > 0 ||
relatedAssetAux.getReference().trim().length() > 0 ||
relatedAssetAux.getRelatedAssetTypeDTO() != null) {
return "Enter all fields then click in Add.";
}
}
return "";
}
public String removeRelatedAsset() {
Long relatedAssetRandomIDToRemove = Long.parseLong( JSFUtil.getRequestParameter("relatedAssetRandomIDToRemove") );
for (RelatedAsset relatedAsset : getDTO().getRelatedAssets()) {
if (relatedAsset.getRandomID().equals(relatedAssetRandomIDToRemove)) {
getDTO().getRelatedAssets().remove( relatedAsset );
break;
}
}
this.loadSuggestedAssets();
return "";
}
public String addSuggestedAsset() {
String pkParam = JSFUtil.getRequestParameter("suggestedAssetPkToAdd");
Asset suggestedAssetToAdd = AssetDAO.getInstance().findUniqueByPk(Integer.valueOf(pkParam));
relatedAssetAux = new RelatedAsset();
relatedAssetAux.setId(suggestedAssetToAdd.getId());
relatedAssetAux.setName(suggestedAssetToAdd.getName());
relatedAssetAux.setVersion(suggestedAssetToAdd.getVersion());
relatedAssetAux.setReference(AssetMB.REFERENCE_MODEL);
return "";
}
public String loadSuggestedAssets() {
SearchMB searchMB = JSFUtil.findBean("searchMB");
searchMB.searchSuggestedAssets(this.getDTO(), 10);
return "";
}
public RelatedAsset getRelatedAssetAux() {
return relatedAssetAux;
}
public void setRelatedAssetAux(RelatedAsset relatedAssetAux) {
this.relatedAssetAux = relatedAssetAux;
}
public String getRelatedAssetIDMessage() {
return relatedAssetIDMessage;
}
public void setRelatedAssetIDMessage(String relatedAssetIDMessage) {
this.relatedAssetIDMessage = relatedAssetIDMessage;
}
public String getRelatedAssetNameMessage() {
return relatedAssetNameMessage;
}
public void setRelatedAssetNameMessage(String relatedAssetNameMessage) {
this.relatedAssetNameMessage = relatedAssetNameMessage;
}
public String getRelatedAssetVersionMessage() {
return relatedAssetVersionMessage;
}
public void setRelatedAssetVersionMessage(String relatedAssetVersionMessage) {
this.relatedAssetVersionMessage = relatedAssetVersionMessage;
}
public String getRelatedAssetReferenceMessage() {
return relatedAssetReferenceMessage;
}
public void setRelatedAssetReferenceMessage(String relatedAssetReferenceMessage) {
this.relatedAssetReferenceMessage = relatedAssetReferenceMessage;
}
public String getRelatedAssetTypeMessage() {
return relatedAssetTypeMessage;
}
public void setRelatedAssetTypeMessage(String relatedAssetTypeMessage) {
this.relatedAssetTypeMessage = relatedAssetTypeMessage;
}
}