/**
*
*/
package net.agef.jobexchange.webservice;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
import javax.servlet.ServletContext;
import net.agef.jobexchange.application.DataProviderWorker;
import net.agef.jobexchange.application.JobWorker;
import net.agef.jobexchange.domain.DataProvider;
import net.agef.jobexchange.domain.JobActiveEnum;
import net.agef.jobexchange.domain.JobApplication;
import net.agef.jobexchange.domain.JobImpl;
import net.agef.jobexchange.exceptions.APDUserNotFoundException;
import net.agef.jobexchange.exceptions.CantChangeOnlineStateException;
import net.agef.jobexchange.exceptions.ClientIPNotAuthorizedException;
import net.agef.jobexchange.exceptions.CountryNotFoundException;
import net.agef.jobexchange.exceptions.EnumValueNotFoundException;
import net.agef.jobexchange.exceptions.JobOfferNotFoundException;
import net.agef.jobexchange.exceptions.ObjectNotSavedException;
import net.agef.jobexchange.exceptions.OccupationalFieldNotFoundException;
import net.agef.jobexchange.exceptions.PassedAttributeIsNullException;
import net.agef.jobexchange.exceptions.TerritoryNotFoundException;
import net.agef.jobexchange.webservice.adapter.CountryAssembler;
import net.agef.jobexchange.webservice.adapter.JobApplicationAssembler;
import net.agef.jobexchange.webservice.adapter.JobAssembler;
import net.agef.jobexchange.webservice.adapter.JobSearchResultAssembler;
import net.agef.jobexchange.webservice.adapter.TerritoryAssembler;
import net.agef.jobexchange.webservice.entities.CountryDTO;
import net.agef.jobexchange.webservice.entities.JobApplicationDTO;
import net.agef.jobexchange.webservice.entities.JobDTO;
import net.agef.jobexchange.webservice.entities.JobSearchResultDTO;
import net.agef.jobexchange.webservice.entities.TerritoryDTO;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.log4j.Logger;
/**
*
*
* Die Klasse JobWS ist eine Webservice Skeleton Klasse und haelt alle Methoden zur
* Interaktion mit Stellenangeboten im Kontext der Jobboerse bereit.
*
* @author Andreas Pursian
*/
public class JobWS{
private Logger logger = Logger.getLogger(JobWS.class);
private JobWorker jw;
private JobAssembler ja;
private JobApplicationAssembler jaa;
private JobSearchResultAssembler jsra;
private CountryAssembler ca;
private TerritoryAssembler ta;
private MessageContext msgCtx;
private ServletContext axisServletContext;
private DataProviderWorker dw;
private DataProvider dataProvider;
@SuppressWarnings("static-access")
public JobWS() throws AxisFault {
try {
this.msgCtx = MessageContext.getCurrentMessageContext();
this.axisServletContext = (ServletContext)msgCtx.getProperty("transport.http.servletContext");
this.jw = (JobWorker)axisServletContext.getAttribute("JobWorker.JobWorkerService");
this.dw = (DataProviderWorker)axisServletContext.getAttribute("DataProviderWorker.DataProviderWorkerService");
this.ja = (JobAssembler)axisServletContext.getAttribute("JobAssembler.JobAssemblerService");
this.jaa = (JobApplicationAssembler)axisServletContext.getAttribute("JobApplicationAssembler.JobApplicationAssemblerService");
this.jsra = (JobSearchResultAssembler)axisServletContext.getAttribute("JobSearchResultAssembler.JobSearchResultAssemblerService");
this.ca = (CountryAssembler)axisServletContext.getAttribute("CountryAssembler.CountryAssemblerService");
this.ta = (TerritoryAssembler)axisServletContext.getAttribute("TerritoryAssembler.TerritoryAssemblerService");
//Ueberpruefung auf korrekten und erlaubten Datenprovider anhand der zugreifenden Client IP
String remoteClientAddress = (String) msgCtx.getProperty(msgCtx.REMOTE_ADDR);
logger.info("JobWS - RemoteClientIP: "+remoteClientAddress);
dataProvider = dw.checkForValidDataProviderByIP(remoteClientAddress);
if(dataProvider == null){
try {
throw new ClientIPNotAuthorizedException();
} catch (ClientIPNotAuthorizedException e) {
e.printStackTrace();
throw new AxisFault("Client IP Not Autherized Exception");
}
}
} catch (Exception e) {
throw new AxisFault("General WebService Instantiation Exception");
}
}
/**
* Die Methode 'getAllJobOffers' gibt alle in der Jobboerse hinterlegten Stellenangebote zurueck.
*
* @return Gibt ein Array von Objekten der Klasse JobDTO zurueck.
*/
public JobDTO[] getAllJobOffers(){
logger.info("Get all jobOffers");
Collection<JobImpl> allJobOffers = jw.getAllJobOffers();
if(allJobOffers!=null){
List<JobDTO> jobOffersDTO = new ArrayList<JobDTO>();
Iterator<JobImpl> it = allJobOffers.iterator();
while(it.hasNext()){
jobOffersDTO.add(ja.createDTO(it.next()));
}
return jobOffersDTO.toArray(new JobDTO[0]);
}
return null;
}
/**
* Die Methode 'setJobOfferOnlineState' setzt den aktuellen Online Status eines Stellenangebots.
*
* @param Erwartet die JobOffer Id und den neuen OnlineStatus als Parameter.
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' im Fehlerfall 'false'.
*/
public Boolean setJobOfferOnlineState(Long jobOfferId, Boolean onlineState){
logger.info("Set joboffer onlineState by jobOfferId: "+jobOfferId +"---"+onlineState);
try {
JobImpl job = jw.getJobOfferDetails(jobOfferId);
jw.setJobOfferOnlineStatus(job, onlineState);
} catch (JobOfferNotFoundException e) {
e.printStackTrace();
return false;
} catch (ObjectNotSavedException e) {
e.printStackTrace();
return false;
} catch (CantChangeOnlineStateException e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* Die Methode 'getJobOfferOnlineState' gibt den aktuellen Online Status eines Stellenangebots zurück.
*
* @param Erwartet die JobOffer Id .
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' oder 'false' im Fehlerfall 'null'.
*/
public Boolean getJobOfferOnlineState(Long jobOfferId){
logger.info("Get joboffer onlineState by jobOfferId: "+jobOfferId );
JobImpl job;
try {
job = jw.getJobOfferDetails(jobOfferId);
} catch (JobOfferNotFoundException e) {
e.printStackTrace();
return null;
}
return job.getOnlineStatus();
}
/**
*
* Die Methode 'increaseJobApplicationLinkCounter' erhöht für ein konkretes Jobangebot den Zähler für Klicks auf den Link
* zu einer weiterführenden Bewerbungsseite des Arbeitgebers.
*
*
* @param Erwartet die JobOffer Id als Parameter.
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' im Fehlerfall 'false'.
*/
public Boolean increaseJobApplicationLinkCounter(Long jobOfferId){
logger.info("Increase joboffer Application link click counter by jobOfferId: "+jobOfferId );
Long clickCounter;
try {
clickCounter = jw.increaseJobApplicationLinkCounter(jobOfferId);
} catch (ObjectNotSavedException e) {
e.printStackTrace();
return false;
} catch (JobOfferNotFoundException e) {
e.printStackTrace();
return false;
}
logger.info("Increased link click counter to: "+clickCounter );
return true;
}
/**
*
* Die Methode 'checkIfJobOffersExist' überprüft ob für einem konkreten Nutzer bereits Stellenangebote hinterlegt wurden
* oder nicht.
*
* @param Erwartet die APD User Id als Parameter.
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' im Fehlerfall 'false'.
*/
public Boolean checkIfJobOffersExist(Long apdUserId) {
logger.info("Check if user has jobOffers by apdUserId: "+apdUserId);
try {
Collection<JobImpl> jobList = jw.getJobOffersByAPDUser(apdUserId);
if(jobList != null && jobList.size()>0){
return true;
} else return false;
} catch (APDUserNotFoundException e) {
e.printStackTrace();
return false;
}
}
/**
*
* Die Methode 'checkIfUserIsJobOfferOwner' überprüft ob für einem konkreten Nutzer ob ihm ein konkretes Stellenangebote zuzuschreiben
* ist oder nicht.
*
* @param Erwartet die APD User Id und die JobOffer Id als Parameter.
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' im Fehlerfall 'false'.
*/
public Boolean checkIfUserIsJobOfferOwner(Long apdUserId, Long jobOfferId) {
logger.info("Check if user ("+ apdUserId +") is owner of jobOffer: "+jobOfferId);
try {
Collection<JobImpl> jobList = jw.getJobOffersByAPDUser(apdUserId);
if(jobList != null && jobList.size()>0){
Iterator<JobImpl> it = jobList.iterator();
while(it.hasNext()){
JobImpl job = it.next();
if (job.getJobOfferOwner() != null && job.getJobOfferOwner().getApdUserId() != null && job.getJobOfferOwner().getApdUserId().equals(apdUserId)){
return true;
}
}
return false;
} else return false;
} catch (APDUserNotFoundException e) {
e.printStackTrace();
return false;
}
}
/**
*
* Die Methode 'checkIfJobexchangeIsOnline' überprüft ob die Jobbörse ordnungsgemäß arbeitet oder nicht-> Prüfung findet anhand von Aufruf aller Stellendaten statt
*
* @param Erwartet keinen Parameter.
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' im Fehlerfall 'false'.
*/
public Boolean checkIfJobexchangeIsOnline() {
System.out.print("Check if jobDB is online");
// try {
// Collection<JobImpl> jobList = jw.getAllJobOffers();
// if(jobList != null && jobList.size()>0){
// System.out.print(" ... true");
// return true;
// } else {
// System.out.print(" ... false");
// return false;
// }
// } catch (Exception e) {
// System.out.print(" ... false");
// e.printStackTrace();
// return false;
// }
return true;
}
/**
* Die Methode 'getJobOffersByUser' gibt alle in der Jobboerse hinterlegten Stellenangebote eines spezifischen
* Nutzers zurueck.
*
* @param Erwartet die APD User Id als Parameter.
* @return Gibt ein Array von Objekten der Klasse JobDTO zurueck.
*/
public JobDTO[] getJobOffersByUser(Long apdUserId){
logger.info("Get JobOffer By User apdUserId :"+apdUserId);
Collection<JobImpl> jobOffers = new TreeSet<JobImpl>();
try {
jobOffers = jw.getJobOffersByAPDUser(apdUserId);
} catch (APDUserNotFoundException e) {
e.printStackTrace();
return null;
}
if(jobOffers!=null){
//TODO Performance Engpass -> Lösung mit hibernate Transformer oder Ähnlich finden !!!
List<JobDTO> jobOffersDTO = new ArrayList<JobDTO>();
Iterator<JobImpl> it = jobOffers.iterator();
while(it.hasNext()){
jobOffersDTO.add(ja.createDTO(it.next()));
}
return jobOffersDTO.toArray(new JobDTO[0]);
} else return null;
}
/**
* Die Methode 'getJobOffersByUserAndCriteria' gibt alle in der Jobboerse hinterlegten Stellenangebote eines spezifischen
* Nutzers und der angegebenen Kriterien zurueck.
*
* @param Erwartet die APD User Id als Parameter.
* @return Gibt ein Array von Objekten der Klasse JobDTO zurueck.
*/
public JobDTO[] getJobOffersByUserAndCriteria(Long apdUserId, String jobActive, CountryDTO country, TerritoryDTO territory, int numberOfResults, int indexStart){
logger.info("Get JobOffer By User apdUserId :"+apdUserId);
Collection<JobImpl> jobOffers = new TreeSet<JobImpl>();
try {
logger.info(" in country: "+country.getCountry());
logger.info(" in territory: "+territory.getTerritory());
jobOffers = jw.getJobOffersByAPDUserAndCriteria(apdUserId, JobActiveEnum.fromValue(jobActive), ca.getDomainObj(country), ta.getDomainObj(territory), numberOfResults, indexStart);
} catch (APDUserNotFoundException e) {
e.printStackTrace();
return null;
} catch (CountryNotFoundException e) {
e.printStackTrace();
return null;
} catch (TerritoryNotFoundException e) {
e.printStackTrace();
return null;
} catch (EnumValueNotFoundException e) {
e.printStackTrace();
return null;
}
if(jobOffers!=null){
//TODO Performance Engpass -> Lösung mit hibernate Transformer oder Ähnlich finden !!!
List<JobDTO> jobOffersDTO = new ArrayList<JobDTO>();
Iterator<JobImpl> it = jobOffers.iterator();
while(it.hasNext()){
jobOffersDTO.add(ja.createDTO(it.next()));
}
return jobOffersDTO.toArray(new JobDTO[0]);
} else return null;
}
/**
* Die Methode 'getJobOfferDetails' gibt das spezifische Stellenangebot, welches durch die eindeutige JobOffer Id
* abgefragt wurde zurueck. Kann das Stellenangebot nicht gefunden werden, wird NULL zurückgegen.
*
* @param Erwartet die JobOffer Id als Parameter.
* @return Gibt ein Objekt der Klasse JobDTO zurueck.
*
*/
public JobDTO getJobOfferDetails(Long jobOfferId){
logger.info("Get joboffer details - jobOffer: "+jobOfferId);
JobImpl jobDetails = null;
try {
jobDetails = jw.getJobOfferDetails(jobOfferId);
} catch (JobOfferNotFoundException e) {
e.printStackTrace();
return null;
}
return ja.createDTO(jobDetails);
}
/**
* Die Methode 'getJobOfferByCriteria' gibt alle in der Jobboerse hinterlegten Stellenangebote die
* auf die Suchanfrage passen zurueck.
*
* @param Erwartet den Such-String sowie ein ewentuell ausgewähltes Land oder einen Kontinent als Parameter.
* @return Gibt ein Array von Objekten der Klasse JobDTO zurueck.
*/
public JobDTO[] getJobOfferByCriteria(String criteria, CountryDTO country, TerritoryDTO territory){//, CountryDTO country, TerritoryDTO territory
logger.info("Get joboffer by criteria: "+criteria);
Collection<JobImpl> jobOffers;
try {
jobOffers = jw.getJobOfferByCriteria(criteria, ca.getDomainObj(country), ta.getDomainObj(territory));
} catch (CountryNotFoundException e) {
e.printStackTrace();
return null;
} catch (TerritoryNotFoundException e) {
e.printStackTrace();
return null;
}
List<JobDTO> jobOffersDTO = new ArrayList<JobDTO>();
if(jobOffers!= null){
//TODO Performance Engpass -> Lösung mit hibernate Transformer oder Ähnlich finden !!!
Iterator<JobImpl> it = jobOffers.iterator();
while(it.hasNext()){
jobOffersDTO.add(ja.createDTO(it.next()));
}
}
return jobOffersDTO.toArray(new JobDTO[0]);
}
/**
* Die Methode 'getJobOfferSearchResultsByCriteria' gibt alle in der Jobboerse hinterlegten Stellenangebote die
* auf die Suchanfrage passen zurueck. Dabei wird im Gegensatz zu 'getJobOfferByCriteria' nicht das gesamte Stellenobjekt
* sondern nur eine auf die Anzeige in einer Suchergebnissübersicht verkürzte Variante zurückgegeben
*
* @param Erwartet den Such-String sowie ein ewentuell ausgewähltes Land oder einen Kontinent als Parameter.
* @return Gibt ein Array von Objekten der Klasse JobSearchResultDTO zurueck.
*/
public JobSearchResultDTO[] getJobOfferSearchResultsByCriteria(String criteria, CountryDTO country, TerritoryDTO territory, Integer resultsAmount, Integer pageIndexStart){//, CountryDTO country, TerritoryDTO territory
logger.info("Get joboffer search result by criteria: "+criteria+"--- resultsAmount: "+resultsAmount+" --- pageIndexStart: "+pageIndexStart);
Collection<JobSearchResultDTO> jobOffers;
try {
jobOffers = jw.getJobOfferByCriteria(criteria, ca.getDomainObj(country), ta.getDomainObj(territory),resultsAmount, pageIndexStart);
} catch (CountryNotFoundException e) {
e.printStackTrace();
return null;
} catch (TerritoryNotFoundException e) {
e.printStackTrace();
return null;
}
// List<JobSearchResultDTO> jobOffersDTO= new ArrayList<JobSearchResultDTO>();
// if(jobOffers!= null){
// //TODO Performance Engpass -> Lösung mit hibernate Transformer oder Ähnlich finden !!!
// Iterator<JobImpl> it = jobOffers.iterator();
// while(it.hasNext()){
// jobOffersDTO.add(jsra.createDTO(it.next()));
// }
// }
return jobOffers.toArray(new JobSearchResultDTO[0]);//DTO.toArray(new JobDTO[0]);
}
/**
* Die Methode 'getJobOfferSearchResultsAmountByCriteria' gibt die Anzahl der in der Jobboerse hinterlegten Stellenangebote die
* auf die Suchanfrage passen zurueck.
*
* @param Erwartet den Such-String sowie ein ewentuell ausgewähltes Land oder einen Kontinent als Parameter.
* @return Gibt ein Array von Objekten der Klasse JobSearchResultDTO zurueck.
*/
public Integer getJobOfferSearchResultsAmountByCriteria(String criteria, CountryDTO country, TerritoryDTO territory){//, CountryDTO country, TerritoryDTO territory
logger.info("Get joboffer by search amount criteria: "+criteria);
try {
return jw.getJobOfferResultAmountByCriteria(criteria, ca.getDomainObj(country), ta.getDomainObj(territory));
} catch (CountryNotFoundException e) {
e.printStackTrace();
return null;
} catch (TerritoryNotFoundException e) {
e.printStackTrace();
return null;
}
}
// /**
// * Die Methode 'getJobOfferSearchResultsByCriteria' gibt alle in der Jobboerse hinterlegten Stellenangebote die
// * auf die Suchanfrage passen zurueck. Dabei wird im Gegensatz zu 'getJobOfferByCriteria' nicht das gesamte Stellenobjekt
// * sondern nur eine auf die Anzeige in einer Suchergebnissübersicht verkürzte Variante zurückgegeben
// *
// * @param Erwartet den Such-String sowie ein ewentuell ausgewähltes Land oder einen Kontinent als Parameter.
// * @return Gibt ein Array von Objekten der Klasse JobSearchResultDTO zurueck.
// */
// public Object[][] getJobOfferSearchResultsByCriteria(String criteria, CountryDTO country, TerritoryDTO territory, Integer resultsAmount){//, CountryDTO country, TerritoryDTO territory
// logger.info("Get joboffer search result by criteria: "+criteria);
// Collection<JobSearchResultDTO> jobOffers;
// try {
// jobOffers = jw.getJobOfferByCriteria(criteria, ca.getDomainObj(country), ta.getDomainObj(territory),resultsAmount);
// } catch (CountryNotFoundException e) {
// e.printStackTrace();
// return null;
// } catch (TerritoryNotFoundException e) {
// e.printStackTrace();
// return null;
// }
//// List<JobSearchResultDTO> jobOffersDTO= new ArrayList<JobSearchResultDTO>();
//// if(jobOffers!= null){
//// //TODO Performance Engpass -> Lösung mit hibernate Transformer oder Ähnlich finden !!!
//// Iterator<JobImpl> it = jobOffers.iterator();
//// while(it.hasNext()){
//// jobOffersDTO.add(jsra.createDTO(it.next()));
//// }
//// }
// Object result[][] = new Array()[][];
//
// return jobOffers.toArray(new JobSearchResultDTO[0]);//DTO.toArray(new JobDTO[0]);
// }
/**
* Die Methode 'addJobOffer' ermoeglicht es fuer einen bestehenden Nutzer ein neues Stellenangebot zu veroeffentlichen.
*
* @param Erwartet ein Objekt der Klasse JobDTO mit allen relevanten Stellendaten sowie die APD User Id.
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' im Fehlerfall 'false'.
*
*/
public Long addJobOffer(JobDTO jobOffer, Long apdUserId){
logger.info("Adding joboffer by apdUser: "+apdUserId);
jobOffer.setJobOfferOwner(apdUserId);
Long savedJobId = new Long(0);
try {
savedJobId = jw.addJobOffer(ja.createDomainObjByApdId(jobOffer),this.dataProvider);
} catch (APDUserNotFoundException e) {
e.printStackTrace();
return new Long(0);
} catch (OccupationalFieldNotFoundException e) {
e.printStackTrace();
return new Long(0);
} catch (ObjectNotSavedException e) {
e.printStackTrace();
return new Long(0);
} catch (Exception e) {
e.printStackTrace();
return new Long(0);
}
logger.info("Joboffer was successfully saved with JobOfferId: "+savedJobId);
return savedJobId;
}
/**
* Die Methode 'applyToJobOffer' ermoeglicht es einem Nutzer der APD Plattform sich auf ein Stellenangebot zu bewerben.
*
* @param Erwartet die Stellenangebots Id der Stelle auf die sich der Nutzer Bewerben moechte, die APD User Id des Bewerbers sowie eine optionale Kontaktmitteilung als Parameter.
*/
public Boolean applyToJobOffer(Long jobOfferId, Long apdUserId, String contactNote){
logger.info("Apply to joboffer - jobOfferId: "+jobOfferId+" apdUserId: "+apdUserId);
try {
jw.applyToJobOffer(jobOfferId,apdUserId,contactNote);
} catch (JobOfferNotFoundException e) {
e.printStackTrace();
return false;
} catch (APDUserNotFoundException e) {
e.printStackTrace();
return false;
} catch (ObjectNotSavedException e) {
e.printStackTrace();
return false;
}
return true;
}
// /**
// * Die Methode 'getJobOfferApplications' liefert alle Bewerbungsanfragen die ein Nutzer an einen/mehrere Stellenangebote gestellt hat.
// *
// * @param Erwartet die APD User Id als Parameter.
// * @return Gibt ein Array von Objekten der Klasse JobApplicationDTO zurueck.
// */
// public JobApplicationDTO[] getJobOfferApplications(Long apdUserId){
// return null;
// }
/**
* Die Methode 'getReceivedJobOfferApplications' liefert alle Kontaktanfragen die ein Nutzer (etwa eine Organisation/Unternehmen) zu seinen
* veroeffentlichten Stellenangebote erhalten hat.
*
* @param Erwartet die APD User Id als Parameter.
* @return Gibt ein Array von Objekten der Klasse JobApplicationDTO zurueck.
*/
public JobApplicationDTO[] getReceivedJobOfferApplications(Long apdUserId){
logger.info("Get Received JobOffer Applications for user apdUserId: "+apdUserId);
Collection<JobApplication> jobApplications;
try {
jobApplications = jw.getReceivedJobOfferApplications(apdUserId);
} catch (APDUserNotFoundException e) {
e.printStackTrace();
return null;
}
List<JobApplicationDTO> jobApplicationDTO = new ArrayList<JobApplicationDTO>();
if(jobApplications!= null){
//TODO Performance Engpass -> Lösung mit hibernate Transformer oder Ähnlich finden !!!
Iterator<JobApplication> it = jobApplications.iterator();
while(it.hasNext()){
jobApplicationDTO.add(jaa.createDTO(it.next()));
}
}
return jobApplicationDTO.toArray(new JobApplicationDTO[0]);
}
/**
* Die Methode 'modifyApplicantProfile' ermoeglicht es das bestehende Stellenangebot eines bestehendem Nutzers zu modifizieren.
*
* @param Erwartet ein Objekt der Klasse JobDTO mit allen relevanten Stellendaten sowie die JobOffer Id.
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' im Fehlerfall 'false'.
*/
public Boolean modifyJobOffer(JobDTO jobOffer, Long jobOfferId){
logger.info("Modify JobOffer by JobOfferId :"+jobOfferId);
jobOffer.setJobOfferId(jobOfferId);
try {
jw.modifyJobOffer(ja.updateDomainObjByApdId(jobOffer));
} catch (JobOfferNotFoundException e) {
e.printStackTrace();
return false;
} catch (OccupationalFieldNotFoundException e) {
e.printStackTrace();
return false;
} catch (EnumValueNotFoundException e) {
e.printStackTrace();
return false;
} catch (CountryNotFoundException e) {
e.printStackTrace();
return false;
} catch (PassedAttributeIsNullException e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* Die Methode 'deleteJobOffer' ermoeglicht es ein bestehende Stellenangebot eines bestehendem Nutzers zu loeschen.
*
* @param Erwartet die JobOffer Id als Parameter.
* @return Gibt ein Objekt vom Typ Boolean zurueck. Im Erfolgsfall traegt dieses den Wert 'true' im Fehlerfall 'false'.
* @throws JobOfferNotFoundException
*/
public Boolean deleteJobOffer(Long jobOfferId){
logger.info("Delete JobOffer by JobOfferId :"+jobOfferId);
try {
jw.deleteJobOffer(jobOfferId);
} catch (JobOfferNotFoundException e) {
return false;
} catch (PassedAttributeIsNullException e) {
e.printStackTrace();
return false;
}
return true;
}
// /**
// *
// * Die Methode 'getAutoCompleteList' gibt vollstaendige Such-Strings die auf Stellenangebote in der Jobboerse und
// * auf die unvollstaendige Suchanfrage passen zurueck.
// *
// * @param Erwartet den Such-String als Parameter.
// * @return Gibt ein Array von Strings zurueck.
// */
// public String[] getAutoCompleteList(String expression){
// logger.info("Get autocompletelist for expression: "+expression);
// return jw.getAutoCompleteResults(expression).toArray(new String[0]);
// }
//
// /**
// * Die Methode 'getSimilarJobOffers' gibt zu dem uebergebenen Stellenangebot inhaltlich aehnliche Stellenangebote zurueck.
// *
// * @param Erwartet eine JobOffer Id als Parameter.
// * @return Gibt ein Array von Objekten der Klasse JobDTO zurueck.
// */
// public JobDTO[] getSimilarJobOffers(Long jobOfferId){
// logger.info("Get similar jobOffers by JobOfferId: "+jobOfferId);
// Collection<JobImpl> jobOffers = jw.getMoreLikeThis(jobOfferId);
// Collection<JobDTO> jobOffersDTO = new TreeSet<JobDTO>();
// if(jobOffers!=null){
// //TODO Performance Engpass -> Lösung mit hibernate Transformer oder Ähnlich finden !!!
// Iterator<JobImpl> it = jobOffers.iterator();
// while(it.hasNext()){
// jobOffersDTO.add(ja.createDTO(it.next()));
// }
// }
// return jobOffersDTO.toArray(new JobDTO[0]);
// }
// public JobImpl[] getJobOfferBySectorAndCountry(Long[] sectorIds, Long[] CountryIds){
// return jw.getJobOfferBySector(sectorIds).toArray(new JobImpl[0]);
// }
}