/* * MediathekView * Copyright (C) 2013 W. Xaver * W.Xaver[at]googlemail.com * http://zdfmediathk.sourceforge.net/ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package mediathek.tool; import mSearch.tool.Log; public class MVFilmSize implements Comparable<MVFilmSize> { private long aktSizeL = -1L; public Long sizeL = 0L; private String sizeStr = ""; public MVFilmSize() { } @Override public int compareTo(MVFilmSize ll) { return (sizeL.compareTo(ll.sizeL)); } @Override public String toString() { return sizeStr; } public void setSize(String size) { // im Film ist die Größe in "MB" !! if (size.isEmpty()) { aktSizeL = -1L; sizeL = 0L; sizeStr = ""; } else { try { sizeL = Long.valueOf(size); sizeL = sizeL * 1000 * 1000; sizeStr = size; } catch (Exception ex) { Log.errorLog(978745320, ex, "String: " + size); sizeL = 0L; sizeStr = ""; } } } public void reset() { aktSizeL = -1L; setString(); } public void setSize(long l) { sizeL = l; setString(); } public long getSize() { return sizeL; } public void setAktSize(long l) { aktSizeL = l; setString(); } public void addAktSize(long l) { aktSizeL += l; setString(); } public long getAktSize() { return aktSizeL; } public void setString() { if (aktSizeL <= 0) { if (sizeL > 0) { sizeStr = getGroesse(sizeL); } else { sizeStr = ""; } } else if (sizeL > 0) { sizeStr = getGroesse(aktSizeL) + " von " + getGroesse(sizeL); } else { sizeStr = getGroesse(aktSizeL); } } public static String getGroesse(long l) { String ret = ""; if (l > 1000 * 1000) { // größer als 1MB sonst kann ich mirs sparen ret = String.valueOf(l / (1000 * 1000)); } else if (l > 0) { ret = "1"; } return ret; } /** * Convert a byte count into a human readable string. * * @param bytes The number of bytes to convert. * @param si Use International System of Units (SI)? * @return The string representation */ public static String humanReadableByteCount(final long bytes, final boolean si) { final int unit = si ? 1000 : 1024; if (bytes < unit) { return bytes + " B"; } final int exp = (int) (Math.log(bytes) / Math.log(unit)); final String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i"); return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre); } }