Blame view
circus/src/circusRefine/storage/StatusCircusRefine.java
5.24 KB
8d0dc533f
![]() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
/* * Cristiano Gurgel * * Projeto: Circus Refine */ package circusRefine.storage; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.core.BaseException; /** * Classe que armazena o Status do Circus Refine. Utilizada no * salvamento/recuperação de um programa * * @author Cristiano Gurgel * @version 1.1 06/01/07 */ public class StatusCircusRefine { private static final int BUFFER = 2048; /** Status da tela de desenvolvimento */ private StatusDesenvolvimento desenvolvimento; /** Status da tela principal */ private StatusPrincipal principal; /** Status do gerenciador externo */ private StatusExterno externo; /** Status do Gerenciador Interno*/ private StatusInterno interno; /** * Inicializa o status do circus Refine com todos os valores * em <code>null</code> */ public StatusCircusRefine() { this(null, null, null, null); } /** * Inicializa o status do circusRefine com todos os valores * definidos * * @param novoDesenvolvimento Status da tela de desenvolvimento * @param novoExterno Status do Gerenciador Externo * @param novoInterno Status do Gerenciador Interno * @param novoPrincipal Status da Tela Principal */ public StatusCircusRefine(StatusDesenvolvimento novoDesenvolvimento, StatusExterno novoExterno, StatusInterno novoInterno, StatusPrincipal novoPrincipal) { this.setDesenvolvimento(novoDesenvolvimento); this.setExterno(novoExterno); this.setInterno(novoInterno); this.setPrincipal(novoPrincipal); } /** * Acessa o status do desenvolvimento * * @return o status da tela de desenvolvimento */ public StatusDesenvolvimento getDesenvolvimento() { return desenvolvimento; } /** * Seta o atributo do status da tela de desenvolvimento * * @param desenvolvimento o novo status da tela de desenvolvimento */ public void setDesenvolvimento(StatusDesenvolvimento desenvolvimento) { this.desenvolvimento = desenvolvimento; } /** * Acessa o status da tela principal * * @return o status da tela principal */ public StatusPrincipal getPrincipal() { return principal; } /** * Seta o atributo do status da tela principal * * @param principal o novo status da tela principal */ public void setPrincipal(StatusPrincipal principal) { this.principal = principal; } /** * Acessa o status do gerenciador externo * * @return o status do gerenciador externo */ public StatusExterno getExterno() { return externo; } /** * Seta o atributo do status do gerenciador externo * * @param externo o novo status do gerenciador externo */ public void setExterno(StatusExterno externo) { this.externo = externo; } /** * Acessa o status do gerenciador interno * * @return o status do gerenciador interno */ public StatusInterno getInterno() { return interno; } /** * Seta o status do gerenciador interno * * @param interno novo status do gerenciador interno */ public void setInterno(StatusInterno interno) { this.interno = interno; } /** * Salva o conteudo deste objeto em um arquivo passado como * parametro * * @param arquivo arquivo onde o status será salvo * @throws IOException caso um erro de IO ocorra durante o * processo de salvamento */ public void salvar(File arquivo) throws IOException { /* OutpuStreams */ FileOutputStream out = new FileOutputStream(arquivo); ZipOutputStream zos = new ZipOutputStream(out); /* Metodo de compressão */ zos.setMethod(ZipOutputStream.DEFLATED); /* Gera o xml */ XStream xml = new XStream(); byte[] dados = xml.toXML(this).getBytes(); /* Cria o arquivo .zip */ ZipEntry entrada = new ZipEntry("prog.xml"); zos.putNextEntry(entrada); zos.write(dados); zos.close(); } /** * Abre o conteúdo de um arquivo no formato aceito pela * ferramenta. * * @param arquivo o arquivo a ser aberto * @return o status do circusRefine representado pelo arquivo * @throws IOException caso um erro de I/O ocorra na abertura do * arquivo * @throws BaseException caso o arquivo não possa ser * deserializado */ public static StatusCircusRefine abrir(File arquivo) throws IOException, BaseException { /* Cria os input Streams */ FileInputStream fin = new FileInputStream(arquivo); ZipInputStream zin = new ZipInputStream(new BufferedInputStream(fin)); ByteArrayOutputStream out = new ByteArrayOutputStream(); /* Extrai os dados */ ZipEntry entrada = zin.getNextEntry(); if (entrada != null) { byte[] dados = new byte[StatusCircusRefine.BUFFER]; int cont; while ((cont = zin.read(dados, 0 , StatusCircusRefine.BUFFER)) != -1) { out.write(dados, 0, cont); } } zin.close(); /* Gera o objeto */ XStream xml = new XStream(); return (StatusCircusRefine)xml.fromXML(out.toString()); } } |