001: /*
002: * Created on 13/02/2004
003: *
004: * Swing Components - visit http://sf.net/projects/gfd
005: *
006: * Copyright (C) 2004 Igor Regis da Silva Simões
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU General Public License
010: * as published by the Free Software Foundation; either version 2
011: * of the License, or (at your option) any later version.
012: *
013: * This program is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with this program; if not, write to the Free Software
020: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
021: */
022:
023: package br.com.gfp.data;
024:
025: import java.security.InvalidParameterException;
026: import java.sql.SQLException;
027: import java.util.Date;
028: import java.util.Map;
029:
030: import br.com.gfp.internationalization.ErrosDeDadosMessages;
031: import br.com.gfpshare.db.Column;
032: import br.com.gfpshare.db.Table;
033:
034: /**
035: * Classe que representa um lancamento realizado em qualquer conta.
036: *
037: * @author Igor Regis da Silva Simoes
038: */
039: @Table(name="Lancamento")
040: public class Transaction extends BasicGFPDataObject {
041: /**
042: * Esta constante representa um intervalo diário de repetição para lançamentos
043: */
044: public static final int DIAS = 1;
045:
046: /**
047: * Esta constante representa um intervalo semanal de repetição para lançamentos
048: */
049: public static final int SEMANDAS = 2;
050:
051: /**
052: * Esta constante representa um intervalo mensal de repetição para lançamentos
053: */
054: public static final int MESES = 3;
055:
056: /**
057: * Esta constante representa um intervalo anual de repetição para lançamentos
058: */
059: public static final int ANOS = 4;
060:
061: /**
062: *
063: */
064: // private int lancamentoTransferencia = -1;
065: /**
066: * Dia em que o lancamento foi realizado
067: */
068: @Column(nome="Dia",isPk=false,writeMethodName="setDia",readMethodName="getDia")
069: private Date dia = null;
070:
071: /**
072: * Valor do lancamento
073: */
074: @Column(nome="Valor",isPk=false,writeMethodName="setValor",readMethodName="getValor")
075: private Double valor = null;
076:
077: /**
078: * Tipo do lancamento
079: */
080: @Column(nome="Tipo",isPk=false,writeMethodName="setTipo",readMethodName="getTipo")
081: private Integer tipo = null;
082:
083: /**
084: * Descricao do lancamento
085: */
086: @Column(nome="Descricao",isPk=false,writeMethodName="setDescricao",readMethodName="getDescricao")
087: private String descricao = null;
088:
089: /**
090: * Intervalo de repeticao do lancamento
091: */
092: @Column(nome="IntervaloRepeticao",isPk=false,writeMethodName="setIntervaloRepeticao",readMethodName="getIntervaloRepeticao")
093: private Integer intervaloRepeticao = null;
094:
095: /**
096: * Tipo do intervalo de repeticao do lancamento
097: */
098: @Column(nome="TipoIntervaloRepeticao",isPk=false,writeMethodName="setTipoIntervaloRepeticao",readMethodName="getTipoIntervaloRepeticao")
099: private Integer tipoIntervaloRepeticao = null;
100:
101: /**
102: * Produto envolvido no lancamento
103: */
104: @Column(nome="Produto",isPk=false,writeMethodName="setProduto",readMethodName="getProduto")
105: private Integer produto = null;
106:
107: /**
108: * Entidade envolvida no lancamento
109: */
110: @Column(nome="EntidadeEnvolvida",isPk=false,writeMethodName="setEntidadeEnvolvida",readMethodName="getEntidadeEnvolvida")
111: private Integer entidadeEnvolvida = null;
112:
113: /**
114: * Tipo de conta que o lancamento afeta
115: */
116: @Column(nome="TipoConta",isPk=false,writeMethodName="setTipoConta",readMethodName="getTipoConta")
117: private String tipoConta = null;
118:
119: /**
120: * Account que o lancamento afeta
121: */
122: @Column(nome="Conta",isPk=false,writeMethodName="setConta",readMethodName="getConta")
123: private Integer conta = null;
124:
125: /**
126: * Indica se é um previsao
127: */
128: @Column(nome="EhPrevisao",isPk=false,writeMethodName="setEhPrevisao",readMethodName="getEhPrevisao")
129: private Boolean ehPrevisao = null;
130:
131: /**
132: * Indica se o lançamento é de sistema
133: */
134: @Column(nome="EhDeSistema",isPk=false,writeMethodName="setEhDeSistema",readMethodName="getEhDeSistema")
135: private Boolean ehDeSistema = null;
136:
137: /**
138: * Identificado que visa relacionar dois lançamentos como send referentes a um
139: * transferencia dessa forma quando um dos lançamentos for removido o outro
140: * também o será.
141: */
142: @Column(nome="Transferencia",isPk=false,writeMethodName="setTransferencia",readMethodName="getTransferencia")
143: private Double transferencia = null;
144:
145: /**
146: * Tipo da conta para o qual o valor foi transferido em caso de tipo = transferencia
147: */
148: @Column(nome="TipoContaTransf",isPk=false,writeMethodName="setTipoContaTransf",readMethodName="getTipoContaTransf")
149: private String tipoContaTransf = null;
150:
151: /**
152: * Account para qual o valor foi transferido em caso de tipo = transferencia
153: */
154: @Column(nome="ContaTransf",isPk=false,writeMethodName="setContaTransf",readMethodName="getContaTransf")
155: private Integer contaTransf = null;
156:
157: /**
158: * Quantas vezes este lançamento será realizado
159: */
160: private int vezesPraRealizar = 0;
161:
162: /**
163: * Indica se numa consulta os subtipos do tipo selecionado devem ser incluidos
164: */
165: private boolean incluirSubtipos = true;
166:
167: /** Cria uma nova instância de Lancamento */
168: public Transaction() {
169: //Não fazemos nada
170: }
171:
172: /**
173: * Cria uma nova instância de Lancamento
174: * @param id Id do lancamento
175: */
176: public Transaction(int id) {
177: setId(Integer.valueOf("" + id));
178: }
179:
180: /**
181: * Cria uma nova instância de Lancamento
182: *
183: * @param dados Map com os dados deste novo lancamento
184: */
185: public Transaction(Map<String, Object> dados) {
186: setDados(dados);
187: }
188:
189: /*
190: * @see br.com.igor.db.AbstractPersistentObject#setDados(java.util.Map)
191: */
192: @Override
193: public void setDados(Map<String, Object> dados) {
194: if (dados != null) {
195: super .setDados(dados);
196: return;
197: }
198: setId(null);
199: dia = null;
200: valor = null;
201: tipo = null;
202: descricao = null;
203: intervaloRepeticao = null;
204: tipoIntervaloRepeticao = null;
205: produto = null;
206: entidadeEnvolvida = null;
207: tipoConta = null;
208: conta = null;
209: ehPrevisao = null;
210: ehDeSistema = null;
211: transferencia = null;
212: tipoContaTransf = null;
213: contaTransf = null;
214: vezesPraRealizar = 0;
215: incluirSubtipos = true;
216: }
217:
218: /**
219: * Getter for property dia.
220: *
221: * @return Value of property dia.
222: */
223: public Date getDia() {
224: return dia;
225: }
226:
227: /**
228: * Setter for property dia.
229: *
230: * @param dia New value of property dia.
231: */
232: public void setDia(Date dia) {
233: this .dia = dia;
234: }
235:
236: /**
237: * Getter for property valor.
238: *
239: * @return Value of property valor.
240: */
241: public Double getValor() {
242: return valor;
243: }
244:
245: /**
246: * Setter for property valor.
247: *
248: * @param valor New value of property valor.
249: */
250: public void setValor(Double valor) {
251: this .valor = valor;
252: }
253:
254: /**
255: * Getter for property descricao.
256: *
257: * @return Value of property descricao.
258: */
259: public String getDescricao() {
260: return descricao;
261: }
262:
263: /**
264: * Setter for property descricao.
265: *
266: * @param descricao New value of property descricao.
267: */
268: public void setDescricao(String descricao) {
269: this .descricao = descricao.equals("") ? null : descricao;
270: }
271:
272: /**
273: * Getter for property intervaloRepeticao.
274: *
275: * @return Value of property intervaloRepeticao.
276: */
277: public Integer getIntervaloRepeticao() {
278: return intervaloRepeticao;
279: }
280:
281: /**
282: * Setter for property intervaloRepeticao.
283: *
284: * @param intervaloRepeticao New value of property intervaloRepeticao.
285: */
286: public void setIntervaloRepeticao(Integer intervaloRepeticao) {
287: this .intervaloRepeticao = intervaloRepeticao.intValue() == 0 ? null
288: : intervaloRepeticao;
289: }
290:
291: /**
292: * Getter for property tipoIntervaloRepeticao.
293: *
294: * @return Value of property tipoIntervaloRepeticao.
295: */
296: public Integer getTipoIntervaloRepeticao() {
297: return tipoIntervaloRepeticao;
298: }
299:
300: /**
301: * Setter for property tipoIntervaloRepeticao.
302: *
303: * @param tipoIntervaloRepeticao New value of property tipoIntervaloRepeticao.
304: */
305: public void setTipoIntervaloRepeticao(Integer tipoIntervaloRepeticao) {
306: this .tipoIntervaloRepeticao = tipoIntervaloRepeticao.intValue() == 0 ? null
307: : tipoIntervaloRepeticao;
308: }
309:
310: /**
311: * Getter for property tipo.
312: *
313: * @return Value of property tipo.
314: */
315: public Integer getTipo() {
316: return tipo;
317: }
318:
319: /**
320: * Setter for property tipo.
321: *
322: * @param tipo New value of property tipo.
323: */
324: public void setTipo(Integer tipo) {
325: this .tipo = tipo;
326: }
327:
328: /**
329: * Getter for property lancamentoTransferencia.
330: *
331: * @return Value of property lancamentoTransferencia.
332: */
333: /*
334: * public int getLancamentoTransferencia() { return lancamentoTransferencia; }
335: */
336: /**
337: * Setter for property lancamentoTransferencia.
338: *
339: * @param lancamentoTransferencia New value of property lancamentoTransferencia.
340: */
341: /*
342: * public void setLancamentoTransferencia(int lancamentoTransferencia) { this.lancamentoTransferencia =
343: * lancamentoTransferencia; }
344: */
345: /**
346: * Getter for property produto.
347: *
348: * @return Value of property produto.
349: */
350: public Integer getProduto() {
351: return produto;
352: }
353:
354: /**
355: * Setter for property produto.
356: *
357: * @param produto New value of property produto.
358: */
359: public void setProduto(Integer produto) {
360: this .produto = produto;
361: }
362:
363: /**
364: * Getter for property entidade.
365: *
366: * @return Value of property entidade.
367: */
368: public Integer getEntidadeEnvolvida() {
369: return entidadeEnvolvida;
370: }
371:
372: /**
373: * Setter for property entidade.
374: *
375: * @param entidade New value of property entidade.
376: */
377: public void setEntidadeEnvolvida(Integer entidade) {
378: this .entidadeEnvolvida = entidade;
379: }
380:
381: /**
382: * Getter for property agencia.
383: *
384: * @return Value of property agencia.
385: */
386: public String getTipoConta() {
387: return tipoConta;
388: }
389:
390: /**
391: * Setter for property TipoConta.
392: *
393: * @param tipoConta New value of property TipoConta.
394: */
395: public void setTipoConta(String tipoConta) {
396: this .tipoConta = tipoConta;
397: }
398:
399: /**
400: * Account na qual caira o lançamento
401: *
402: * @return Value of property conta.
403: */
404: public Integer getConta() {
405: return conta;
406: }
407:
408: /**
409: * Account na qual caira o lançamento
410: *
411: * @param conta New value of property conta.
412: */
413: public void setConta(Integer conta) {
414: this .conta = conta;
415: }
416:
417: /**
418: * Indica de o lançamento é de sistema
419: * @return boolean
420: */
421: public Boolean getEhDeSistema() {
422: return ehDeSistema;
423: }
424:
425: /**
426: * Indica de o lançamento é de sistema
427: * @param persistentEhDeSistema
428: */
429: public void setEhDeSistema(Boolean persistentEhDeSistema) {
430: this .ehDeSistema = persistentEhDeSistema;
431: }
432:
433: /**
434: * Indica de o lançamento é uma previsão
435: * @return boolean
436: */
437: public Boolean getEhPrevisao() {
438: return ehPrevisao;
439: }
440:
441: /**
442: * Indica de o lançamento é uma previsão
443: * @param persistentEhPrevisao
444: */
445: public void setEhPrevisao(Boolean persistentEhPrevisao) {
446: this .ehPrevisao = persistentEhPrevisao;
447: }
448:
449: /**
450: * @see br.com.gfpshare.db.PersistentObject#validate()
451: */
452: public void validate() throws SQLException {
453: validateValor(getValor());
454: if (this .conta == null)
455: throw new SQLException(ErrosDeDadosMessages.getMessages()
456: .getString("ContaLancamentoInvalida"));
457: if (this .tipo == null)
458: throw new SQLException(ErrosDeDadosMessages.getMessages()
459: .getString("TipoLancamentoInvalido"));
460: if (this .dia == null)
461: throw new SQLException(ErrosDeDadosMessages.getMessages()
462: .getString("DiaLancamentoInvalido"));
463: }
464:
465: /**
466: * @see br.com.gfpshare.db.PersistentObject#getAsString(int)
467: */
468: public String getAsString(int format) {
469: switch (format) {
470: case AccountSaving.CURTO:
471: return getDia() + " - " + getValor();
472: case AccountSaving.MEDIO:
473: return getDia() + " - " + getValor() + " - "
474: + getDescricao();
475: case AccountSaving.LONGO:
476: return toString();
477: }
478: return "";
479: }
480:
481: /**
482: * Quantas vezes este lançamento será realizado
483: * @return int
484: */
485: public int getVezesPraRealizar() {
486: return vezesPraRealizar;
487: }
488:
489: /**
490: * Quantas vezes este lançamento será realizado
491: * @param vezesPraRealizar
492: */
493: public void setVezesPraRealizar(int vezesPraRealizar) {
494: this .vezesPraRealizar = vezesPraRealizar;
495: }
496:
497: /**
498: * Indica se numa consulta os subtipos do tipo selecionado devem ser incluidos
499: * @return
500: */
501: public boolean isIncluirSubtipos() {
502: return incluirSubtipos;
503: }
504:
505: /**
506: * Indica se numa consulta os subtipos do tipo selecionado devem ser incluidos
507: * @param incluirSubtipos
508: */
509: public void setIncluirSubtipos(boolean incluirSubtipos) {
510: this .incluirSubtipos = incluirSubtipos;
511: }
512:
513: /**
514: * Valida o campo valor do lançamento
515: * @throws InvalidParameterException
516: */
517: public void validateValor(Object valor)
518: throws InvalidParameterException {
519: if (valor != null)
520: this .valor = (Double) valor;
521: if (this .valor == null
522: || this .valor.equals(Double.valueOf("0.0"))
523: || this .valor.equals(Double.valueOf("-0.0")))
524: throw new RuntimeException(ErrosDeDadosMessages
525: .getMessages().getString("ValorLancamentoInvalido"));
526: }
527:
528: /**
529: * Valida o lancçamento como sendo uma transaferencia válida
530: * @param transaction Lancamento a ser validado, null caso seja o próprio
531: * @throws SQLException Caso os campo conta e tipo conta transf estejam vazios
532: */
533: public void validateTransfer(Transaction transaction)
534: throws SQLException {
535: if (transaction == null) {
536: if (getTipoContaTransf() == null
537: || getContaTransf() == null)
538: throw new SQLException(ErrosDeDadosMessages
539: .getMessages()
540: .getString("SelecioneContaTransf"));
541: } else {
542: if (transaction.getTipoContaTransf() == null
543: || transaction.getContaTransf() == null)
544: throw new SQLException(ErrosDeDadosMessages
545: .getMessages()
546: .getString("SelecioneContaTransf"));
547: }
548: }
549:
550: /**
551: * Identificado que visa relacionar dois lançamentos como send referentes a um
552: * transferencia dessa forma quando um dos lançamentos for removido o outro
553: * também o será.
554: * @return Id da transferencia ou null caso não tenha ID
555: */
556: public Double getTransferencia() {
557: return transferencia;
558: }
559:
560: /**
561: * Identificado que visa relacionar dois lançamentos como send referentes a um
562: * transferencia dessa forma quando um dos lançamentos for removido o outro
563: * também o será.
564: * @param persistentTransferencia Seta o Id da transferencia
565: */
566: public void setTransferencia(Double persistentTransferencia) {
567: this .transferencia = persistentTransferencia;
568: }
569:
570: /**
571: * Account para qual o valor foi transferido em caso de tipo = transferencia
572: * @return Integer
573: */
574: public Integer getContaTransf() {
575: return contaTransf;
576: }
577:
578: /**
579: * Account para qual o valor foi transferido em caso de tipo = transferencia
580: * @param persistentContaTransf
581: */
582: public void setContaTransf(Integer persistentContaTransf) {
583: this .contaTransf = persistentContaTransf;
584: }
585:
586: /**
587: * Tipo da conta para o qual o valor foi transferido em caso de tipo = transferencia
588: * @return String
589: */
590: public String getTipoContaTransf() {
591: return tipoContaTransf;
592: }
593:
594: /**
595: * Tipo da conta para o qual o valor foi transferido em caso de tipo = transferencia
596: * @param persistentTipoContaTransf
597: */
598: public void setTipoContaTransf(String persistentTipoContaTransf) {
599: this.tipoContaTransf = persistentTipoContaTransf;
600: }
601: }
|