org.polymap.wbv.model.Waldbesitzer.java Source code

Java tutorial

Introduction

Here is the source code for org.polymap.wbv.model.Waldbesitzer.java

Source

/*
 * Copyright (C) 2014-2015 Polymap GmbH. All rights reserved.
 * 
 * This is free software; you can redistribute it and/or modify it under the terms of
 * the GNU Lesser General Public License as published by the Free Software
 * Foundation; either version 3.0 of the License, or (at your option) any later
 * version.
 * 
 * This software is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 */
package org.polymap.wbv.model;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import com.google.common.collect.Collections2;
import com.google.common.collect.Iterables;

import org.polymap.model2.CollectionProperty;
import org.polymap.model2.Defaults;
import org.polymap.model2.Entity;
import org.polymap.model2.MinOccurs;
import org.polymap.model2.Property;
import org.polymap.model2.Queryable;
import org.polymap.model2.query.Expressions;
import org.polymap.model2.query.Query;
import org.polymap.model2.runtime.ValueInitializer;
import org.polymap.wbv.mdb.ImportColumn;
import org.polymap.wbv.mdb.ImportTable;

/**
 * 
 * 
 * @author <a href="http://www.polymap.de">Falko Brutigam</a>
 */
//@SRS("EPSG:4326")
@ImportTable("Waldbesitzer")
public class Waldbesitzer extends Entity {

    public static Waldbesitzer TYPE;

    /** Id des Waldbesitzers, der herrenlose Flurstcke sammelt. */
    public static final String HERRENLOSE_FLURSTCKE = "HERRENLOSE_FLURSTCKE";

    public static final ValueInitializer<Waldbesitzer> defaults = (Waldbesitzer proto) -> {
        proto.eigentumsArt.set(Waldeigentumsart.Privat);
        proto.kontakte.createElement(Kontakt.defaults);
        // damit die sch** tabelle den ersten Eintrag zeigt
        // proto.flurstuecke.createElement( Flurstueck.defaults );
        return proto;
    };

    //    0|ID_WBS                         (LONG 4)                  
    //    1|WBS_Name                       (TEXT 100)                
    //    2|WBS_Vorname                    (TEXT 100)                
    //    3|WBS_Waldbesitzer               (BOOLEAN 1)               
    //    4|WBS_Pchter                    (BOOLEAN 1)               
    //    5|WBS_FBG                        (BOOLEAN 1)               
    //    6|WBS_FBG_Nr                     (LONG 4)                  
    //    7|WBS_EA                         (TEXT 6)                  
    //    8|WBS_Bemerkung                  (MEMO 0)                  
    //    9|WBS_Feld1                      (TEXT 100)                
    //   10|WBS_Feld2                      (TEXT 100)                
    //   11|WBS_ID_Alt                     (LONG 4)                  
    //   12|WBS_Papierkorb                 (BOOLEAN 1)               
    //   13|WBS_Betreuung_stndig          (BOOLEAN 1)               
    //   14|WBS_FBNr                       (LONG 4)

public enum Waldeigentumsart {
    Staat_Sachsen( "Staatswald", "Freistaat Sachsen" ),
    Staat_Bund( "Staatswald", "Bund" ),
    Krperschaft_Kommune( "Krperschaftswald", "Kommunen" ),
    Krperschaft_ZVB( "Krperschaftswald", "Sonstige" ),
    Kirche42( "Kirchenwald nach  4/2", null ),
    Kirche43( "Kirchenwald nach  4/3", null ),
    Privat( "Privatwald", null ),
    BVVG( "BVVG", null ),
    Unbekannt( "Unbekannt", null );
        
    private String      name;
    private String      zusatz;
        
    private Waldeigentumsart( String name, String zusatz ) {
        this.name = name;
        this.zusatz = zusatz;
    }
        
    public String label() {
        return name + (zusatz != null ? " / " + zusatz : "");
    }

    public static Map<String,Waldeigentumsart> map() {
        Map<String,Waldeigentumsart> result = new HashMap();
        for (Waldeigentumsart elm : Waldeigentumsart.values()) {
            result.put( elm.label(), elm );
        }
        return result;
    }
}

    @Queryable
    public Property<Waldeigentumsart> eigentumsArt;

    @Defaults
    @Queryable
    @ImportColumn("WBS_Bemerkung")
    public Property<String> bemerkung;

    @Defaults
    @Queryable
    @ImportColumn("WBS_Pchter")
    public Property<Boolean> pchter;

@Defaults
@Queryable
@ImportColumn("WBS_Papierkorb")
public Property<Boolean>            gelscht;

    public CollectionProperty<Flurstueck> flurstuecke;

    /**
     * Alle Ansprechpartner/Kontakte, inklusive aller gelschten Eintrge, inklusive
     * des {@link #besitzer()}s auf Index {@link #besitzerIndex}.
     * 
     * @see #kontakte()
     */
    @MinOccurs(1)
    public CollectionProperty<Kontakt> kontakte;

    @Defaults
    public Property<Integer> besitzerIndex;

    public CollectionProperty<Ereignis> ereignisse;

    /** 
     * Aktuellen, nicht gelschte Flurstcke, die in einer {@link Gemarkung} des
     * bergebenen {@link Revier}s liegen.
     * 
     * @param revier Das Revier oder null, dann werden alle Flurstcke geliefert.
     */
    public Collection<Flurstueck> flurstuecke(Revier revier) {
        return Collections2.filter(flurstuecke, fst -> {
            if (fst.geloescht.get()) {
                return false;
            } else if (revier != null && fst.gemarkung.isPresent()) {
                Object fstGmkId = fst.gemarkung.get().id();
                for (Gemarkung gmk : revier.gemarkungen) {
                    if (gmk.id().equals(fstGmkId)) {
                        return true;
                    }
                }
                return false;
            } else {
                return true;
            }
        });
    }

    /** 
     * Nicht gelschte {@link #kontakte}.
     */
    public Collection<Kontakt> kontakte() {
        return Collections2.filter(kontakte, k -> !k.geloescht.get());
    }

    public Kontakt besitzer() {
        return Iterables.get(kontakte(), besitzerIndex.get(), null);
    }

    /**
     * Andere Seite der {@link Waldstueck#waldbesitzer} Assoziation.
     */
    public Query<Waldstueck> waldstuecke() {
        Waldstueck wanted = Expressions.template(Waldstueck.class, context.getRepository());
        return context.getUnitOfWork().query(Waldstueck.class).where(Expressions.is(wanted.waldbesitzer, this));
    }

}