Code:
@MappedSuperclass
public abstract class XXObject <P extends Proprieta<TP>, TP extends TipologiaProprieta, A extends Area<TP>> extends AnagraficaObject<P, TP, A> {
@Transient
protected final Log logger = LogFactory.getLog(this.getClass());
@Transient
private int type;
@Field(index=Index.TOKENIZED)
private String identificatore;
public void setIdentificatore(String identificatore) {
this.identificatore = identificatore;
}
public void setType(int type) {
this.type = type;
}
public String getIdentificatore() {
return identificatore;
}
public int getType() {
return type;
}
}
@Entity
@NamedQueries( {
... })
@Inheritance(strategy = InheritanceType.JOINED)
@Indexed(index = "collane")
public class Collana extends
XXObject<ProprietaCollana, TipologiaProprietaCollana, AreaCollana>
implements Serializable, Selectable {
/** chiave primaria */
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "COLLANA_SEQ")
@SequenceGenerator(name = "COLLANA_SEQ", sequenceName = "COLLANA_SEQ")
@DocumentId
private Integer id;
@OneToMany(mappedBy = "contenitore")
@Cascade(value = { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
@IndexedEmbedded @ContainedIn
private List<Opera> opere;
@OneToMany
@Cascade(value = { CascadeType.ALL })
@IndexedEmbedded @ContainedIn
private List<Progetto> progettiStandard;
@ManyToMany
@Cascade(value = { CascadeType.ALL })
private List<TipologiaProgetto> tipologieProgettiAmmessi;
/** operatore responsabile */
@ManyToOne
@IndexedEmbedded @ContainedIn
private Operatore responsabile;
@Transient
private Map<String, List<ProprietaCollana>> anagrafica4view = new HashMap<String, List<ProprietaCollana>>();
@OneToMany(mappedBy = "parent")
@Cascade(value = { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
@Field
@FieldBridge(impl = ProprietaBridge.class)
@IndexedEmbedded @ContainedIn
private List<ProprietaCollana> anagrafica;
public Collana() {
logger
.debug("nel costruttore di collana---inizializzo anagrafica e lista di progetti standard");
anagrafica = new LinkedList<ProprietaCollana>();
if (getProgettiStandard() == null) {
setProgettiStandard(new LinkedList<Progetto>());
}
}
public List<ProprietaCollana> getAnagrafica() {
return anagrafica;
}
public String getDisplayValue() {
if (getAnagrafica4view().get("titolo") != null) {
logger.debug("**************" + getAnagrafica4view().get("titolo"));
return getAnagrafica4view().get("titolo").toString();
}
logger
.debug("COLLANA ************** nessun oggetto con key: 'titolo' trovato in anagrafica4view");
return "VVVV FOR PRESIDENT"; // lista vuota
}
public String getIdentifyingValue() {
return getId().toString();
}
public Class<ProprietaCollana> getClassProprieta() {
return ProprietaCollana.class;
}
public Class<TipologiaProprietaCollana> getClassTipologiaProprieta() {
return TipologiaProprietaCollana.class;
}
public Class<AreaCollana> getClassArea() {
return AreaCollana.class;
}
// accessori e setter
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Operatore getResponsabile() {
return responsabile;
}
public void setResponsabile(Operatore responsabile) {
this.responsabile = responsabile;
}
public List<Opera> getOpere() {
return opere;
}
public void setOpere(List<Opera> opere) {
this.opere = opere;
}
public List<Progetto> getProgettiStandard() {
return progettiStandard;
}
public void setProgettiStandard(List<Progetto> progettiStandard) {
this.progettiStandard = progettiStandard;
}
public List<TipologiaProgetto> getTipologieProgettiAmmessi() {
return tipologieProgettiAmmessi;
}
public void setTipologieProgettiAmmessi(
List<TipologiaProgetto> tipologieProgettiAmmessi) {
this.tipologieProgettiAmmessi = tipologieProgettiAmmessi;
}
}
@Entity
@Table(name = "Opere")
@NamedQueries( {
....
})
@Indexed(index="opere")
public class Opera extends XXObject<ProprietaOpera,TipologiaProprietaOpera, AreaOpera>
{
//public <T extends it.cilea.epi.intranet.anagrafica.TipologiaProprieta, R extends it.cilea.epi.intranet.anagrafica.Proprieta> R createProprieta(T tipologiaProprieta) {return null;};
public Opera() {
anagrafica = new LinkedList<ProprietaOpera>();
}
/** chiave primaria per l'accesso */
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "OPERA_SEQ")
@SequenceGenerator(name = "OPERA_SEQ", sequenceName = "OPERA_SEQ")
@DocumentId
private Integer id;
@ManyToOne
@IndexedEmbedded @ContainedIn
private Operatore responsabile;
@ManyToOne(fetch = FetchType.LAZY)
@IndexedEmbedded @ContainedIn
private Collana contenitore;
@ManyToOne(fetch = FetchType.LAZY)
@IndexedEmbedded @ContainedIn
private Rivista rivista;
/
@OneToMany(fetch = FetchType.LAZY, mappedBy = "opera")
@Cascade(value = { CascadeType.ALL })
@IndexedEmbedded @ContainedIn
private List<Pubblicazione> pubblicazioni;
@OneToMany(mappedBy = "opera")
@Cascade(value = { CascadeType.ALL })
@IndexedEmbedded @ContainedIn
private List<Allegato> oggetti;
@OneToMany(mappedBy = "opera")
@Cascade(value = { CascadeType.ALL })
@IndexedEmbedded @ContainedIn
private List<Progetto> progetti;
private int versione;
@OneToMany(mappedBy = "parent")
@Cascade(value = { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
@Field
@FieldBridge(impl=ProprietaBridge.class)
@IndexedEmbedded @ContainedIn
private List<ProprietaOpera> anagrafica;
@Transient
private Map<String, List<ProprietaOpera>> anagrafica4view = new HashMap<String, List<ProprietaOpera>>();
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public List<Allegato> getOggetti()
{
return oggetti;
}
protected void setOggetti(List<Allegato> oggetti)
{
this.oggetti = oggetti;
}
public List<Progetto> getProgetti()
{
return progetti;
}
public void setProgetti(List<Progetto> progetti)
{
this.progetti = progetti;
}
public List<Pubblicazione> getPubblicazioni()
{
return pubblicazioni;
}
public void setPubblicazioni(List<Pubblicazione> pubblicazioni)
{
this.pubblicazioni = pubblicazioni;
}
public Operatore getResponsabile()
{
return responsabile;
}
public void setResponsabile(Operatore responsabile)
{
this.responsabile = responsabile;
}
public int getVersione()
{
return versione;
}
public void setVersione(int versione)
{
this.versione = versione;
}
public List<ProprietaOpera> getAnagrafica()
{
Collections.sort(anagrafica);
return anagrafica;
}
public Collana getContenitore() {
return contenitore;
}
public void setContenitore(Collana contenitore) {
this.contenitore = contenitore;
}
public Class<ProprietaOpera> getClassProprieta() {
return ProprietaOpera.class;
}
public Class<TipologiaProprietaOpera> getClassTipologiaProprieta() {
return TipologiaProprietaOpera.class;
}
public Class<AreaOpera> getClassArea() {
return AreaOpera.class;
}
public Rivista getRivista() {
return rivista;
}
public void setRivista(Rivista rivista) {
this.rivista = rivista;
}
}
@Entity
@Table (name="Pubblicazioni")
@NamedQueries( {
..
})
@Indexed(index="pubblicazioni")
public class Pubblicazione extends XXObject<ProprietaPubblicazione, TipologiaProprietaPubblicazione, AreaPubblicazione> implements TypeSupport<ProprietaPubblicazione, TipologiaProprietaPubblicazione, AreaPubblicazione>{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PUBBLICAZIONE_SEQ")
@SequenceGenerator(name = "PUBBLICAZIONE_SEQ", sequenceName = "PUBBLICAZIONE_SEQ")
@DocumentId
private Integer id;
@OneToMany (mappedBy="pubblicazione", fetch=FetchType.LAZY)
@Cascade(value = { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
@IndexedEmbedded @ContainedIn
private List<Allegato> oggetti;
@OneToMany (mappedBy="pubblicazione")
@Cascade(value = { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
@IndexedEmbedded @ContainedIn
private List<Parte> parti;
@ManyToOne
@IndexedEmbedded @ContainedIn
private Operatore responsabile;
@OneToMany(mappedBy="parent")
@Cascade(value = { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
@Field
@FieldBridge(impl=ProprietaBridge.class)
@IndexedEmbedded @ContainedIn
private List<ProprietaPubblicazione> anagrafica;
@Transient
private Map<String, List<ProprietaPubblicazione>> anagrafica4view = new HashMap<String, List<ProprietaPubblicazione>>();
private int versione;
@ManyToOne(fetch = FetchType.LAZY)
@IndexedEmbedded @ContainedIn
private Progetto progetto;
@ManyToOne(fetch = FetchType.LAZY)
private TipologiaPubblicazione tipologia;
@ManyToOne(fetch = FetchType.LAZY)
@IndexedEmbedded @ContainedIn
private Opera opera;
//costruttore e metodi
public Pubblicazione() {
anagrafica = new LinkedList<ProprietaPubblicazione>();
}
public Allegato createAllegato() {
Allegato allegato = new Allegato();
allegato.setPubblicazione(this);
if(oggetti==null)
oggetti = new LinkedList<Allegato>();
oggetti.add(allegato);
return allegato;
}
//accessori e setter
public Opera getOpera() {
return opera;
}
public void setOpera(Opera opera) {
this.opera = opera;
}
public List<Allegato> getOggetti() {
return oggetti;
}
public void setOggetti(List<Allegato> oggetti) {
this.oggetti = oggetti;
}
public List<Parte> getParti() {
return parti;
}
public void setParti(List<Parte> parti) {
this.parti = parti;
}
public Progetto getProgetto() {
return progetto;
}
public void setProgetto(Progetto progetto) {
this.progetto = progetto;
}
public Operatore getResponsabile() {
return responsabile;
}
public void setResponsabile(Operatore responsabile) {
this.responsabile = responsabile;
}
public TipologiaPubblicazione getTipologia() {
return tipologia;
}
public void setTipologia(TipologiaPubblicazione tipologia) {
this.tipologia = tipologia;
}
public int getVersione() {
return versione;
}
public void setVersione(int versione) {
this.versione = versione;
}
public List<ProprietaPubblicazione> getAnagrafica() {
return anagrafica;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Class<ProprietaPubblicazione> getClassProprieta() {
return ProprietaPubblicazione.class;
}
public Class<TipologiaProprietaPubblicazione> getClassTipologiaProprieta() {
return TipologiaProprietaPubblicazione.class;
}
public Class<AreaPubblicazione> getClassArea() {
return AreaPubblicazione.class;
}
}
My problem is always this:
I attend that the
collane index documents contains
opera.anagrafica...
but also
opera.pubblicazione.anagrafica..