 import Foundation
 import ObjectMapper
 
-class Leitung : GeoBaseEntity , MapperProtocol{
-    var leitungstyp : String?; //wird Leitungstypobjekt
-    init(id: Int, leitungstyp: String, geoString: String) {
-        super.init();
-        self.id=id;
-        self.leitungstyp=leitungstyp;
-        self.wgs84WKT=geoString;
-    }
+class Leitung : GeoBaseEntity , MapperProtocol,CellInformationProviderProtocol {
+    var material: Leitungsmaterial?
+    var leitungstyp: Leitungstyp?
+    var querschnitt: Querschnitt?
+    var dokumente: [DMSUrl] = []
+    var laenge: Float?
+    
     required init(){}
     override func map(mapper: Mapper) {
         id <= mapper["id"];
-        leitungstyp <= mapper["fk_leitungstyp.bezeichnung"];
+        material <= mapper["fk_material"];
+        leitungstyp <= mapper["fk_leitungstyp"];
+        querschnitt <= mapper["fk_querschnitt"];
+        dokumente <= mapper["dokumente"]
+        laenge <= mapper["laenge"]
+
+        //Muss an den Schluss wegen by Value übergabe des mapObjects -.-
         wgs84WKT <= mapper["fk_geom.wgs84_wkt"]
     }
     
-//    override func getAnnotationImageName() -> String{
-//        return "handle.png";
-//    }
     
     override func getAnnotationTitle() -> String{
-        return "Leitung \(id)";
+        return "\(getMainTitle())-\(getSubTitle())"
     }
     override func getAnnotationSubTitle() -> String{
         return "\(leitungstyp!)";

}

class Querschnitt : BaseEntity, MapperProtocol {
    var groesse: Float = 0.0
    required init() {
        
    }

    override func map(mapper: Mapper) {
        groesse <= mapper["querschnitt"]
    }
}

class Leitungstyp : BaseEntity, MapperProtocol{
    var bezeichnung: String = "-"

    required init() {
        
    }
    
    override func map(mapper: Mapper) {
            bezeichnung <= mapper["bezeichung"]
    }
}


    override func canShowCallout() -> Bool{
        return true;
    }
    
    // CellInformationProviderProtocol
    
    func getMainTitle() -> String{
        if let mat = leitungstyp?.bezeichnung? {
            return mat
        }
        else {
            return "Leitung"
        }
    }
    func getSubTitle() -> String{
        var laengePart: String
        if let len = laenge? {
            let rounded=String(format: "%.2f", len)
            laengePart="\(rounded)m"
        }
        else {
            laengePart="?m"
        }
        var aPart:String
        if let a = querschnitt?.groesse? {
            aPart = ",\(a)mm²"
        }
        else {
            aPart=""
            
        }
        return "\(laengePart)\(aPart)"
    }
    func getTertiaryInfo() -> String{
        return "\(id)"
    }
    func getQuaternaryInfo() -> String{
        return ""
    }

}

class Leitungsmaterial : BaseEntity, MapperProtocol{
    var bezeichnung: String?
    
    required init() {
        
