java/nekurak.net-lib/src/cz/frantovo/nekurak/dto/VysledekHlasovani.java
author František Kučera <franta-hg@frantovo.cz>
Mon Nov 07 20:31:08 2011 +0100 (2011-11-07)
changeset 196 27b751390163
parent 164 e146e2e3b80b
permissions -rw-r--r--
XSD: lepší schéma pro komentáře a povolíme blockquote.
     1 package cz.frantovo.nekurak.dto;
     2 
     3 import java.util.logging.Level;
     4 import java.util.logging.Logger;
     5 
     6 /**
     7  * Agregovaný výsledek hlasování o tom,
     8  * zda se má v daném (jednom) podniku kouřit nebo ne.
     9  * @author fiki
    10  */
    11 public class VysledekHlasovani {
    12 
    13 	private static final Logger log = Logger.getLogger(VysledekHlasovani.class.getSimpleName());
    14 	private int hlasuAno;
    15 	private int hlasuNe;
    16 	private Podnik podnik;
    17 
    18 	public VysledekHlasovani(Podnik podnik) {
    19 		this.podnik = podnik;
    20 	}
    21 
    22 	/**
    23 	 * @return počet hlasů pro kuřácký podnik
    24 	 */
    25 	public int getHlasuAno() {
    26 		return hlasuAno;
    27 	}
    28 
    29 	public void setHlasuAno(int pocet) {
    30 		this.hlasuAno = pocet;
    31 	}
    32 
    33 	/**
    34 	 * @return počet hlasů pro nekuřácký podnik
    35 	 */
    36 	public int getHlasuNe() {
    37 		return hlasuNe;
    38 	}
    39 
    40 	public void setHlasuNe(int pocet) {
    41 		this.hlasuNe = pocet;
    42 	}
    43 
    44 	public Boolean getSpokojenost() {
    45 		int k = podnik.getKurackost().getId();
    46 
    47 		if (k == 0 || (hlasuAno == 0 && hlasuNe == 0)) {
    48 			/** neznámý stav → neznámá spokojenost */
    49 			return null;
    50 		} else if (k == 1 || k == 4) {
    51 			/** zakouřený podnik */
    52 			return hlasuAno > hlasuNe;
    53 		} else if (k == 2) {
    54 			/** nekuřácký podnik */
    55 			return hlasuAno < hlasuNe;
    56 		} else if (k == 3) {
    57 			/** důkladně oddělené části → pokud hlasování vyšlo mezi 35% a 65% bude spokojenost */
    58 			int soucet = hlasuAno + hlasuNe;
    59 			return hlasuAno > 0.35 * soucet && hlasuAno < 0.65 * soucet;
    60 		} else {
    61 			log.log(Level.SEVERE, "Neznámá hodnota kuřáckosti: {0} u podniku: {1}", new Integer[]{k, podnik.getId()});
    62 			return null;
    63 		}
    64 	}
    65 }