class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
public static void dumpFieldsToSolr(SolrInputDocument doc, Object obj, String namePrefix) {
if(Dumper.class.isAssignableFrom(obj.getClass())) {
((Dumper)obj).preDumpFieldsToSolr();
}
Class<?> c = obj.getClass();
Field[] fields = c.getFields();//DeclaredFields();
for(Field field:fields) {
try {
if(!Modifier.isStatic(field.getModifiers()) && !isTransient(field) && Modifier.isPublic(field.getModifiers())) {
if(Dumper.class.isAssignableFrom(field.getType())) {
Dumper dumper = (Dumper)field.get(obj);
if(dumper != null) {
String prefix = namePrefix+field.getName()+"_";
dumpFieldsToSolr(doc, dumper, prefix);
}
} else if(Iterable.class.isAssignableFrom(field.getType())) {
Iterable<?> col = (Iterable<?>)field.get(obj);
if(col != null) {
String prefix =namePrefix+field.getName()+"_";
for(Object o:col) {
if(o != null) {
if(Dumper.class.isAssignableFrom(o.getClass()) || Iterable.class.isAssignableFrom(o.getClass())) {
dumpFieldsToSolr(doc, o, prefix);
} else {
String value = StringUtil.removeHtmlTags(String.valueOf(o).trim());
doc.addField(namePrefix + field.getName(), value);
}
}
}
}
} else if(Date.class.isAssignableFrom(field.getType())) {
Date value = (Date)field.get(obj);
if(value != null) {
doc.addField(namePrefix + field.getName(), value);
}
} else {
Object o = field.get(obj);
if(o != null) {
String value = StringUtil.removeHtmlTags(String.valueOf(o).trim());
if(value.length() > 0) {
doc.addField(namePrefix + field.getName(), value);
}
}
}
}
} catch(Exception e) {
System.out.println("Class:" + obj.getClass() + ", ErrorField:" + field);
e.printStackTrace();
}
}
if(Dumper.class.isAssignableFrom(c)) {
((Dumper)obj).postDumpFieldsToSolr(doc);
}
}
public Reginfo reginfo;
public Date start;
public Date end;
public List<String> titles;
public List<String> titles_langs;
public List<String> academic_summary;
public List<String> academic_summary_langs;
public List<String> method;
public List<String> method_langs;
public List<String> equipment;
public List<String> equipment_langs;
public List<String> popsci_summary;
public List<String> popsci_summary_langs;
public List<String> patient_oriented_description;
public List<String> patient_oriented_description_langs;
public String mainlanguage;
public Approval approval;
public boolean status_published;
public boolean status_publishable;
public List<String> allInstitutionIds_facet;
public List<String> adminPerson;
transient public Kontaktinformasjon kontaktinformasjon;
public List<PersonInfoUnitRole> person;
public List<Unit> unit;
transient public Reginfo tilknyttetProsjekt; //Obs, denne typen er endret fra prosjekt til reginfo.
public Classification classification;
public String finansiering_finansieringskilde_kode;