java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Atribut.java
author František Kučera <franta-hg@frantovo.cz>
Wed Dec 15 23:58:34 2010 +0100 (2010-12-15)
changeset 11 9b399cde6a3b
parent 10 ed2b6ebf138d
child 19 c20edbed09c3
permissions -rw-r--r--
Klávesové zkratky, kontroly, čeština.
franta-hg@6
     1
package cz.frantovo.rozsireneAtributy;
franta-hg@6
     2
franta-hg@9
     3
import java.nio.ByteBuffer;
franta-hg@9
     4
import java.nio.charset.Charset;
franta-hg@9
     5
franta-hg@6
     6
public class Atribut {
franta-hg@6
     7
franta-hg@11
     8
	private String klíč;
franta-hg@6
     9
	private String hodnota;
franta-hg@6
    10
franta-hg@11
    11
	public Atribut(String klíč, String hodnota) {
franta-hg@11
    12
		this.klíč = klíč;
franta-hg@6
    13
		this.hodnota = hodnota;
franta-hg@6
    14
	}
franta-hg@6
    15
franta-hg@11
    16
	public Atribut(String klíč, ByteBuffer hodnota) {
franta-hg@11
    17
		this.klíč = klíč;
franta-hg@9
    18
		setHodnota(hodnota);
franta-hg@9
    19
	}
franta-hg@9
    20
franta-hg@10
    21
	public Atribut() {
franta-hg@10
    22
	}
franta-hg@10
    23
franta-hg@11
    24
	public String getKlíč() {
franta-hg@11
    25
		return klíč;
franta-hg@6
    26
	}
franta-hg@6
    27
franta-hg@11
    28
	public void setKlíč(String klíč) {
franta-hg@11
    29
		this.klíč = klíč;
franta-hg@11
    30
	}
franta-hg@11
    31
franta-hg@11
    32
	/**
franta-hg@11
    33
	 * Název atributu musí být nenulový a mít nějakou délku, aby šel uložit
franta-hg@11
    34
	 * TODO: další kontroly?
franta-hg@11
    35
	 * @return jestli je platný
franta-hg@11
    36
	 */
franta-hg@11
    37
	public boolean isPlatnýKlíč() {
franta-hg@11
    38
		return klíč != null && klíč.length() > 0;
franta-hg@11
    39
	}
franta-hg@11
    40
franta-hg@11
    41
	/**
franta-hg@11
    42
	 * nulová hodnota → smazání atributu
franta-hg@11
    43
	 * (ale může být prázdný řetězec)
franta-hg@11
    44
	 * @return jestli je platná
franta-hg@11
    45
	 */
franta-hg@11
    46
	public boolean isPlatnáHodnota() {
franta-hg@11
    47
		return hodnota != null;
franta-hg@6
    48
	}
franta-hg@6
    49
franta-hg@6
    50
	public String getHodnota() {
franta-hg@6
    51
		return hodnota;
franta-hg@6
    52
	}
franta-hg@6
    53
franta-hg@9
    54
	public final ByteBuffer getHodnotaBajty() {
franta-hg@9
    55
		return zakóduj(getHodnota());
franta-hg@9
    56
	}
franta-hg@9
    57
franta-hg@6
    58
	public void setHodnota(String hodnota) {
franta-hg@6
    59
		this.hodnota = hodnota;
franta-hg@6
    60
	}
franta-hg@9
    61
franta-hg@9
    62
	public final void setHodnota(ByteBuffer hodnota) {
franta-hg@9
    63
		setHodnota(dekóduj(hodnota));
franta-hg@9
    64
	}
franta-hg@9
    65
franta-hg@9
    66
	private static String dekóduj(ByteBuffer bajty) {
franta-hg@9
    67
		bajty.flip();
franta-hg@9
    68
		return Charset.defaultCharset().decode(bajty).toString();
franta-hg@9
    69
	}
franta-hg@9
    70
franta-hg@9
    71
	private static ByteBuffer zakóduj(String text) {
franta-hg@10
    72
		if (text == null) {
franta-hg@10
    73
			return null;
franta-hg@10
    74
		} else {
franta-hg@10
    75
			return Charset.defaultCharset().encode(text);
franta-hg@10
    76
		}
franta-hg@9
    77
	}
franta-hg@6
    78
}