/**
*
*/
package net.agef.jobexchange.services.lucene;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.agef.jobexchange.domain.Applicant;
import net.agef.jobexchange.domain.Education;
import net.agef.jobexchange.domain.LanguageSkill;
import net.agef.jobexchange.domain.Languages;
import net.agef.jobexchange.domain.WorkExperience;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.hibernate.search.bridge.FieldBridge;
import org.hibernate.search.bridge.LuceneOptions;
import org.hibernate.search.bridge.ParameterizedBridge;
/**
* @author AGEF
*
*/
public class ApplicantConcatClassBridge implements FieldBridge, ParameterizedBridge {
private String sepChar;
@SuppressWarnings("unchecked")
public void setParameterValues(Map parameters) {
this.sepChar = (String) parameters.get( "sepChar" );
}
public void set(String name,
Object value, //the department instance (entity) in this case
Document document, //the Lucene document
LuceneOptions options){
//Field.Store store, Field.Index index, Float boost) { H-Search v. 3.0
// In this particular class the name of the new field was passed
// from the name field of the ClassBridge Annotation. This is not
// a requirement. It just works that way in this instance. The
// actual name could be supplied by hard coding it below.
Applicant applicant = (Applicant) value;
String fieldValue1 = "";
if(applicant.getPreferredFieldOfActivity()!=null){
fieldValue1 = applicant.getPreferredFieldOfActivity().getSectorNameEnglish();
if ( fieldValue1 == null ) {
fieldValue1 = "";
}
}
String fieldValue2 = applicant.getComputerSkillsComments();
if ( fieldValue2 == null ) {
fieldValue2 = "";
}
String fieldValue3 = applicant.getAdditionalSkills();
if ( fieldValue3 == null ) {
fieldValue3 = "";
}
String fieldValue4 = "";
if(applicant.getManagementExperienceSector()!=null){
fieldValue4 = applicant.getManagementExperienceSector().getSectorNameEnglish();
if ( fieldValue4 == null ) {
fieldValue4 = "";
}
}
String fieldValue5 = "";
if(applicant.getManagementExperienceSector()!=null){
fieldValue5 = applicant.getManagementExperienceSector().getSectorNameGerman();
if ( fieldValue5 == null ) {
fieldValue5 = "";
}
}
// Fällt mit den Änderungen des Karriereprofils im Sommer 2010 weg, da
// Managementerfahrung jetzt pro Arbeitserfahrung erfasst wird
// String fieldValue6 = applicant.getManagementExperienceRemarks();
// if ( fieldValue6 == null ) {
// fieldValue6 = "";
// }
String fieldValue7 = "";
if(applicant.getHighestDegree()!=null){
fieldValue7 = applicant.getHighestDegree().getFieldSpecialization();
if ( fieldValue7 == null ) {
fieldValue7 = "";
}
}
String fieldValue8 = "";
if(applicant.getWorkExperience()!=null){
List<WorkExperience> workExpSet = applicant.getWorkExperience();
Iterator<WorkExperience> it = workExpSet.iterator();
while(it.hasNext()){
WorkExperience workExp = it.next();
if(fieldValue8.equals("")){
fieldValue8 = workExp.getJobDescription();
fieldValue8 = fieldValue8+" "+workExp.getJobTitle();
} else {
fieldValue8 = fieldValue8+" "+workExp.getJobDescription();
fieldValue8 = fieldValue8+" "+workExp.getJobTitle();
}
if ( fieldValue8 == null ) {
fieldValue8 = "";
}
}
if ( fieldValue8 == null ) {
fieldValue8 = "";
}
}
String fieldValue9 = "";
if(applicant.getLanguageSkillsOther()!=null){
List<LanguageSkill> lang = applicant.getLanguageSkillsOther();
Iterator<LanguageSkill> it = lang.iterator();
while(it.hasNext()){
if(fieldValue9.equals("")){
Languages language = it.next().getName();
if(language != null)
fieldValue9 = language.getIsoNameLong();
} else {
Languages language = it.next().getName();
if(language != null)
fieldValue9 = fieldValue9+" "+language.getIsoNameLong();
}
if ( fieldValue9 == null ) {
fieldValue9 = "";
}
}
if ( fieldValue9 == null ) {
fieldValue9 = "";
}
}
String fieldValue10 = applicant.getAdditionalRemarks();
if ( fieldValue10 == null ) {
fieldValue10 = "";
}
String fieldValue11 = "";
if(applicant.getFurtherEducation()!=null){
List<Education> furtherEdu = applicant.getFurtherEducation();
Iterator<Education> it = furtherEdu.iterator();
while(it.hasNext()){
if(fieldValue11.equals("")){
fieldValue11 = it.next().getFieldSpecialization();
} else {
fieldValue11 = fieldValue11+" "+it.next().getFieldSpecialization();
}
if ( fieldValue11 == null ) {
fieldValue11 = "";
}
}
if ( fieldValue11 == null ) {
fieldValue11 = "";
}
}
String fieldValue12 = "";
if(applicant.getApplicantProfileId()!=null){
fieldValue12 = applicant.getApplicantProfileId().toString();
if ( fieldValue12 == null ) {
fieldValue12 = "";
}
}
String fieldValue13 = "";
if(applicant.getApplicantProfileOwner()!=null && applicant.getApplicantProfileOwner().getCobraSuperId()!=null){
fieldValue13 = applicant.getApplicantProfileOwner().getCobraSuperId().toString();
if ( fieldValue13 == null ) {
fieldValue13 = "";
}
}
String fieldValue14 = "";
if(applicant.getApplicantProfileOwner() != null
&& applicant.getApplicantProfileOwner().getCurrentContactAddress() != null
&& applicant.getApplicantProfileOwner().getCurrentContactAddress().getCountry() != null ){
fieldValue14 = applicant.getApplicantProfileOwner().getCurrentContactAddress().getCountry().getShortEnglishName() ;
if ( fieldValue14 == null ) {
fieldValue14 = "";
}
}
String fieldValue15 = "";
if(applicant.getAvailability() != null){
fieldValue15 = applicant.getAvailability().name();
if(fieldValue15 == null){
fieldValue15 = "";
}
}
/* Bewerberprofil Sommer 2010 */
String fieldValue16 = "";
fieldValue16 = applicant.getLookingFor();
if ( fieldValue16 == null ) {
fieldValue16 = "";
}
String fieldValue17 = "";
fieldValue17 = applicant.getOffering();
if ( fieldValue17 == null ) {
fieldValue17 = "";
}
String fieldValue18 = "";
fieldValue18 = applicant.getReferencesAndCertificatesComments();
if ( fieldValue18 == null ) {
fieldValue18 = "";
}
String fieldValue19 = "";
if(applicant.getHighestDegree()!=null){
fieldValue19 = applicant.getHighestDegree().getField();
if ( fieldValue19 == null ) {
fieldValue19 = "";
}
}
String fieldValue20 = "";
fieldValue20 = applicant.getPublicationsComments();
if ( fieldValue20 == null ) {
fieldValue20 = "";
}
String fieldValue21 = "";
fieldValue21 = applicant.getFurtherOnlineActivitiesComments();
if ( fieldValue21 == null ) {
fieldValue21 = "";
}
/* Ende Bewerberprofil Sommer 2010 */
String fieldValue = fieldValue1 + sepChar + fieldValue2+ sepChar + fieldValue3+ sepChar +fieldValue4
+ sepChar + fieldValue5+ sepChar +fieldValue7 + sepChar + fieldValue8+ sepChar + fieldValue9
+ sepChar + fieldValue10+ sepChar + fieldValue11+ sepChar + fieldValue12+ sepChar + fieldValue13+ sepChar + fieldValue14
+ sepChar + fieldValue15 + sepChar + fieldValue16 + sepChar + fieldValue17 + sepChar + fieldValue18 + sepChar + fieldValue19
+ sepChar + fieldValue20 + sepChar + fieldValue21;
Field field = new Field( name, fieldValue, options.getStore(), options.getIndex() );
if ( options.getBoost() != null ) field.setBoost( options.getBoost() );
document.add( field );
}
}