From 2ae1eb2611577861b14264415abd17d4ec2050d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B4mulo=20Augusto?= Date: Sat, 10 Jul 2010 01:34:16 +0000 Subject: [PATCH 01/87] Branch para a milestone Helio - 0.2 From 24131d80cfd4f8c5ce15821ac742f2987a8244dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B4mulo=20Augusto?= Date: Sun, 11 Jul 2010 19:59:36 +0000 Subject: [PATCH 02/87] Ticket [jri:r84 #84]: Rename de pacotes do Texgit --- .project | 6 ++++ .../jrimum/texgit/TextFileStream.java | 9 ----- .../jrimum/texgit/engine/TGManager.java | 32 ------------------ .../texgit/type/component/RecordFactory.java | 8 ----- .../jrimum/texgit/FlatFile.java | 2 +- .../jrimum/texgit/IFlatFile.java | 2 +- .../jrimum/texgit/IRecord.java | 2 +- .../jrimum/texgit/Record.java | 2 +- .../jrimum/texgit/Texgit.java | 7 ++-- .../jrimum/texgit/TexgitException.java | 2 +- src/org/jrimum/texgit/TextFileStream.java | 9 +++++ .../texgit/engine/Builder4FixedField.java | 23 ++++++------- .../texgit/engine/Builder4FlatFile.java | 11 ++++--- .../jrimum/texgit/engine/Builder4Record.java | 17 +++++----- .../jrimum/texgit/engine/Factory4Record.java | 11 ++++--- .../texgit/engine/TGLanguageException.java | 4 +-- src/org/jrimum/texgit/engine/TGManager.java | 33 +++++++++++++++++++ .../texgit/engine/TGSchemaValidator.java | 2 +- .../jrimum/texgit/engine/TGXMLReader.java | 10 +++--- .../jrimum/texgit/language/EnumFormats.java | 2 +- .../texgit/language/EnumFormatsTypes.java | 2 +- .../jrimum/texgit/language/EnumPaddings.java | 2 +- .../jrimum/texgit/language/EnumSide.java | 2 +- .../jrimum/texgit/language/EnumTypes.java | 2 +- .../jrimum/texgit/language/MetaField.java | 2 +- .../jrimum/texgit/language/MetaFiller.java | 2 +- .../jrimum/texgit/language/MetaFlatFile.java | 2 +- .../jrimum/texgit/language/MetaFormatter.java | 2 +- .../texgit/language/MetaGroupFields.java | 2 +- .../texgit/language/MetaGroupRecords.java | 2 +- .../jrimum/texgit/language/MetaLayout.java | 2 +- .../texgit/language/MetaOrderedField.java | 2 +- .../jrimum/texgit/language/MetaRecord.java | 2 +- .../jrimum/texgit/language/MetaTexgit.java | 2 +- .../jrimum/texgit/language/ObjectFactory.java | 2 +- .../jrimum/texgit/language/package-info.java | 2 +- .../texgit/type/AbstractStringOfFields.java | 10 +++--- .../jrimum/texgit/type/Field.java | 4 +-- .../jrimum/texgit/type/Fixed.java | 2 +- .../jrimum/texgit/type/FixedField.java | 4 +-- .../jrimum/texgit/type/FixedLength.java | 2 +- .../jrimum/texgit/type/FixedSize.java | 2 +- .../texgit/type/component/BlockOfFields.java | 14 ++++---- .../texgit/type/component/CommonFiller.java | 4 +-- .../jrimum/texgit/type/component/Field.java | 12 +++---- .../jrimum/texgit/type/component/Filler.java | 6 ++-- .../texgit/type/component/FixedField.java | 12 +++---- .../texgit/type/component/FlatFile.java | 30 ++++++++--------- .../jrimum/texgit/type/component/Record.java | 33 ++++++++++--------- .../texgit/type/component/RecordFactory.java | 8 +++++ .../jrimum/texgit/type/component/Side.java | 2 +- .../jrimum/texgit/util/FileUtil.java | 2 +- .../jrimum/utilix/DateUtil.java | 4 +-- .../jrimum/utilix/ObjectUtil.java | 2 +- .../jrimum/utilix/ReadWriteStream.java | 2 +- .../jrimum/utilix/StringUtil.java | 4 +-- .../jrimum/utilix/TextStream.java | 2 +- 57 files changed, 201 insertions(+), 186 deletions(-) delete mode 100644 src/br/com/nordestefomento/jrimum/texgit/TextFileStream.java delete mode 100644 src/br/com/nordestefomento/jrimum/texgit/engine/TGManager.java delete mode 100644 src/br/com/nordestefomento/jrimum/texgit/type/component/RecordFactory.java rename src/{br/com/nordestefomento => org}/jrimum/texgit/FlatFile.java (89%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/IFlatFile.java (89%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/IRecord.java (79%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/Record.java (79%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/Texgit.java (75%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/TexgitException.java (86%) create mode 100644 src/org/jrimum/texgit/TextFileStream.java rename src/{br/com/nordestefomento => org}/jrimum/texgit/engine/Builder4FixedField.java (84%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/engine/Builder4FlatFile.java (68%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/engine/Builder4Record.java (80%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/engine/Factory4Record.java (77%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/engine/TGLanguageException.java (75%) create mode 100644 src/org/jrimum/texgit/engine/TGManager.java rename src/{br/com/nordestefomento => org}/jrimum/texgit/engine/TGSchemaValidator.java (90%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/engine/TGXMLReader.java (78%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/EnumFormats.java (93%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/EnumFormatsTypes.java (91%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/EnumPaddings.java (92%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/EnumSide.java (91%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/EnumTypes.java (93%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaField.java (94%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaFiller.java (92%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaFlatFile.java (93%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaFormatter.java (92%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaGroupFields.java (94%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaGroupRecords.java (93%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaLayout.java (92%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaOrderedField.java (90%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaRecord.java (94%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/MetaTexgit.java (92%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/ObjectFactory.java (94%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/language/package-info.java (87%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/AbstractStringOfFields.java (89%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/Field.java (79%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/Fixed.java (82%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/FixedField.java (63%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/FixedLength.java (59%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/FixedSize.java (58%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/component/BlockOfFields.java (84%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/component/CommonFiller.java (83%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/component/Field.java (90%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/component/Filler.java (93%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/component/FixedField.java (81%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/component/FlatFile.java (73%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/component/Record.java (81%) create mode 100644 src/org/jrimum/texgit/type/component/RecordFactory.java rename src/{br/com/nordestefomento => org}/jrimum/texgit/type/component/Side.java (64%) rename src/{br/com/nordestefomento => org}/jrimum/texgit/util/FileUtil.java (93%) rename src/{br/com/nordestefomento => org}/jrimum/utilix/DateUtil.java (95%) rename src/{br/com/nordestefomento => org}/jrimum/utilix/ObjectUtil.java (96%) rename src/{br/com/nordestefomento => org}/jrimum/utilix/ReadWriteStream.java (94%) rename src/{br/com/nordestefomento => org}/jrimum/utilix/StringUtil.java (99%) rename src/{br/com/nordestefomento => org}/jrimum/utilix/TextStream.java (94%) diff --git a/.project b/.project index 301bc13..1307d54 100644 --- a/.project +++ b/.project @@ -5,6 +5,11 @@ + + org.eclipse.wst.common.project.facet.core.builder + + + org.eclipse.jdt.core.javabuilder @@ -13,5 +18,6 @@ org.eclipse.jdt.core.javanature + org.eclipse.wst.common.project.facet.core.nature diff --git a/src/br/com/nordestefomento/jrimum/texgit/TextFileStream.java b/src/br/com/nordestefomento/jrimum/texgit/TextFileStream.java deleted file mode 100644 index 8202e0d..0000000 --- a/src/br/com/nordestefomento/jrimum/texgit/TextFileStream.java +++ /dev/null @@ -1,9 +0,0 @@ -package br.com.nordestefomento.jrimum.texgit; - -import java.util.List; - -import br.com.nordestefomento.jrimum.utilix.ReadWriteStream; - -public interface TextFileStream extends ReadWriteStream> { - -} diff --git a/src/br/com/nordestefomento/jrimum/texgit/engine/TGManager.java b/src/br/com/nordestefomento/jrimum/texgit/engine/TGManager.java deleted file mode 100644 index 7f4716e..0000000 --- a/src/br/com/nordestefomento/jrimum/texgit/engine/TGManager.java +++ /dev/null @@ -1,32 +0,0 @@ -package br.com.nordestefomento.jrimum.texgit.engine; - -import java.io.File; - -import br.com.nordestefomento.jrimum.texgit.FlatFile; -import br.com.nordestefomento.jrimum.texgit.TexgitException; -import br.com.nordestefomento.jrimum.texgit.language.MetaTexgit; - - -public class TGManager { - - @SuppressWarnings("unchecked") - public static br.com.nordestefomento.jrimum.texgit.FlatFile buildFlatFile(File xmlDef) { - - br.com.nordestefomento.jrimum.texgit.FlatFile iFlatFile = null; - - try { - - MetaTexgit tgMeta = TGXMLReader.parse(xmlDef); - - FlatFile ff = Builder4FlatFile.build(tgMeta.getFlatFile()); - - iFlatFile = ff; - - } catch (Exception e) { - throw new TexgitException(e); - } - - return iFlatFile; - } - -} \ No newline at end of file diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/RecordFactory.java b/src/br/com/nordestefomento/jrimum/texgit/type/component/RecordFactory.java deleted file mode 100644 index 87363f0..0000000 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/RecordFactory.java +++ /dev/null @@ -1,8 +0,0 @@ -package br.com.nordestefomento.jrimum.texgit.type.component; - -import br.com.nordestefomento.jrimum.texgit.Record; - -public interface RecordFactory { - - public abstract G create(String name); -} diff --git a/src/br/com/nordestefomento/jrimum/texgit/FlatFile.java b/src/org/jrimum/texgit/FlatFile.java similarity index 89% rename from src/br/com/nordestefomento/jrimum/texgit/FlatFile.java rename to src/org/jrimum/texgit/FlatFile.java index bad1fcd..865dba5 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/FlatFile.java +++ b/src/org/jrimum/texgit/FlatFile.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit; +package org.jrimum.texgit; import java.util.Collection; diff --git a/src/br/com/nordestefomento/jrimum/texgit/IFlatFile.java b/src/org/jrimum/texgit/IFlatFile.java similarity index 89% rename from src/br/com/nordestefomento/jrimum/texgit/IFlatFile.java rename to src/org/jrimum/texgit/IFlatFile.java index 24039d4..c3c44ac 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/IFlatFile.java +++ b/src/org/jrimum/texgit/IFlatFile.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit; +package org.jrimum.texgit; import java.util.Collection; diff --git a/src/br/com/nordestefomento/jrimum/texgit/IRecord.java b/src/org/jrimum/texgit/IRecord.java similarity index 79% rename from src/br/com/nordestefomento/jrimum/texgit/IRecord.java rename to src/org/jrimum/texgit/IRecord.java index c82fdb6..bdc59d0 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/IRecord.java +++ b/src/org/jrimum/texgit/IRecord.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit; +package org.jrimum.texgit; import java.util.List; diff --git a/src/br/com/nordestefomento/jrimum/texgit/Record.java b/src/org/jrimum/texgit/Record.java similarity index 79% rename from src/br/com/nordestefomento/jrimum/texgit/Record.java rename to src/org/jrimum/texgit/Record.java index 1c6a30a..d420ed7 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/Record.java +++ b/src/org/jrimum/texgit/Record.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit; +package org.jrimum.texgit; import java.util.List; diff --git a/src/br/com/nordestefomento/jrimum/texgit/Texgit.java b/src/org/jrimum/texgit/Texgit.java similarity index 75% rename from src/br/com/nordestefomento/jrimum/texgit/Texgit.java rename to src/org/jrimum/texgit/Texgit.java index 597e6ec..120db7d 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/Texgit.java +++ b/src/org/jrimum/texgit/Texgit.java @@ -1,11 +1,12 @@ -package br.com.nordestefomento.jrimum.texgit; +package org.jrimum.texgit; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.apache.commons.lang.StringUtils.isNotBlank; import java.io.File; -import br.com.nordestefomento.jrimum.texgit.engine.TGManager; +import org.jrimum.texgit.engine.TGManager; + diff --git a/src/br/com/nordestefomento/jrimum/texgit/TexgitException.java b/src/org/jrimum/texgit/TexgitException.java similarity index 86% rename from src/br/com/nordestefomento/jrimum/texgit/TexgitException.java rename to src/org/jrimum/texgit/TexgitException.java index adf49e2..04fdb6d 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/TexgitException.java +++ b/src/org/jrimum/texgit/TexgitException.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit; +package org.jrimum.texgit; /** diff --git a/src/org/jrimum/texgit/TextFileStream.java b/src/org/jrimum/texgit/TextFileStream.java new file mode 100644 index 0000000..1657951 --- /dev/null +++ b/src/org/jrimum/texgit/TextFileStream.java @@ -0,0 +1,9 @@ +package org.jrimum.texgit; + +import java.util.List; + +import org.jrimum.utilix.ReadWriteStream; + +public interface TextFileStream extends ReadWriteStream> { + +} diff --git a/src/br/com/nordestefomento/jrimum/texgit/engine/Builder4FixedField.java b/src/org/jrimum/texgit/engine/Builder4FixedField.java similarity index 84% rename from src/br/com/nordestefomento/jrimum/texgit/engine/Builder4FixedField.java rename to src/org/jrimum/texgit/engine/Builder4FixedField.java index 4ed797a..bcd6d12 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/engine/Builder4FixedField.java +++ b/src/org/jrimum/texgit/engine/Builder4FixedField.java @@ -1,6 +1,6 @@ -package br.com.nordestefomento.jrimum.texgit.engine; +package org.jrimum.texgit.engine; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.apache.commons.lang.StringUtils.EMPTY; import static org.apache.commons.lang.StringUtils.countMatches; import static org.apache.commons.lang.StringUtils.isNotBlank; @@ -13,15 +13,16 @@ import java.text.SimpleDateFormat; import java.util.Date; -import br.com.nordestefomento.jrimum.texgit.TexgitException; -import br.com.nordestefomento.jrimum.texgit.language.EnumFormats; -import br.com.nordestefomento.jrimum.texgit.language.EnumFormatsTypes; -import br.com.nordestefomento.jrimum.texgit.language.MetaField; -import br.com.nordestefomento.jrimum.texgit.type.component.CommonFiller; -import br.com.nordestefomento.jrimum.texgit.type.component.Side; -import br.com.nordestefomento.jrimum.texgit.type.component.Filler; -import br.com.nordestefomento.jrimum.texgit.type.component.FixedField; -import br.com.nordestefomento.jrimum.utilix.DateUtil; +import org.jrimum.texgit.TexgitException; +import org.jrimum.texgit.language.EnumFormats; +import org.jrimum.texgit.language.EnumFormatsTypes; +import org.jrimum.texgit.language.MetaField; +import org.jrimum.texgit.type.component.CommonFiller; +import org.jrimum.texgit.type.component.Filler; +import org.jrimum.texgit.type.component.FixedField; +import org.jrimum.texgit.type.component.Side; + +import org.jrimum.utilix.DateUtil; class Builder4FixedField { diff --git a/src/br/com/nordestefomento/jrimum/texgit/engine/Builder4FlatFile.java b/src/org/jrimum/texgit/engine/Builder4FlatFile.java similarity index 68% rename from src/br/com/nordestefomento/jrimum/texgit/engine/Builder4FlatFile.java rename to src/org/jrimum/texgit/engine/Builder4FlatFile.java index 9d83b87..61da335 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/engine/Builder4FlatFile.java +++ b/src/org/jrimum/texgit/engine/Builder4FlatFile.java @@ -1,15 +1,16 @@ -package br.com.nordestefomento.jrimum.texgit.engine; +package org.jrimum.texgit.engine; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; -import br.com.nordestefomento.jrimum.texgit.language.MetaFlatFile; -import br.com.nordestefomento.jrimum.texgit.language.MetaRecord; -import br.com.nordestefomento.jrimum.texgit.type.component.FlatFile; +import org.jrimum.texgit.language.MetaFlatFile; +import org.jrimum.texgit.language.MetaRecord; +import org.jrimum.texgit.type.component.FlatFile; + public class Builder4FlatFile { diff --git a/src/br/com/nordestefomento/jrimum/texgit/engine/Builder4Record.java b/src/org/jrimum/texgit/engine/Builder4Record.java similarity index 80% rename from src/br/com/nordestefomento/jrimum/texgit/engine/Builder4Record.java rename to src/org/jrimum/texgit/engine/Builder4Record.java index 2c0197d..e701652 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/engine/Builder4Record.java +++ b/src/org/jrimum/texgit/engine/Builder4Record.java @@ -1,17 +1,18 @@ -package br.com.nordestefomento.jrimum.texgit.engine; +package org.jrimum.texgit.engine; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNull; import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import br.com.nordestefomento.jrimum.texgit.language.MetaField; -import br.com.nordestefomento.jrimum.texgit.language.MetaOrderedField; -import br.com.nordestefomento.jrimum.texgit.language.MetaRecord; -import br.com.nordestefomento.jrimum.texgit.type.component.FixedField; -import br.com.nordestefomento.jrimum.texgit.type.component.Record; +import org.jrimum.texgit.language.MetaField; +import org.jrimum.texgit.language.MetaOrderedField; +import org.jrimum.texgit.language.MetaRecord; +import org.jrimum.texgit.type.component.FixedField; +import org.jrimum.texgit.type.component.Record; + class Builder4Record { diff --git a/src/br/com/nordestefomento/jrimum/texgit/engine/Factory4Record.java b/src/org/jrimum/texgit/engine/Factory4Record.java similarity index 77% rename from src/br/com/nordestefomento/jrimum/texgit/engine/Factory4Record.java rename to src/org/jrimum/texgit/engine/Factory4Record.java index 0243246..c42f84d 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/engine/Factory4Record.java +++ b/src/org/jrimum/texgit/engine/Factory4Record.java @@ -1,15 +1,16 @@ -package br.com.nordestefomento.jrimum.texgit.engine; +package org.jrimum.texgit.engine; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.apache.commons.lang.StringUtils.isNotBlank; import java.util.HashMap; import java.util.List; import java.util.Map; -import br.com.nordestefomento.jrimum.texgit.language.MetaRecord; -import br.com.nordestefomento.jrimum.texgit.type.component.RecordFactory; -import br.com.nordestefomento.jrimum.texgit.type.component.Record; +import org.jrimum.texgit.language.MetaRecord; +import org.jrimum.texgit.type.component.Record; +import org.jrimum.texgit.type.component.RecordFactory; + public class Factory4Record implements RecordFactory { diff --git a/src/br/com/nordestefomento/jrimum/texgit/engine/TGLanguageException.java b/src/org/jrimum/texgit/engine/TGLanguageException.java similarity index 75% rename from src/br/com/nordestefomento/jrimum/texgit/engine/TGLanguageException.java rename to src/org/jrimum/texgit/engine/TGLanguageException.java index 90b092d..6c322cf 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/engine/TGLanguageException.java +++ b/src/org/jrimum/texgit/engine/TGLanguageException.java @@ -1,6 +1,6 @@ -package br.com.nordestefomento.jrimum.texgit.engine; +package org.jrimum.texgit.engine; -import br.com.nordestefomento.jrimum.texgit.TexgitException; +import org.jrimum.texgit.TexgitException; @SuppressWarnings("serial") public class TGLanguageException extends TexgitException { diff --git a/src/org/jrimum/texgit/engine/TGManager.java b/src/org/jrimum/texgit/engine/TGManager.java new file mode 100644 index 0000000..cfacde5 --- /dev/null +++ b/src/org/jrimum/texgit/engine/TGManager.java @@ -0,0 +1,33 @@ +package org.jrimum.texgit.engine; + +import java.io.File; + +import org.jrimum.texgit.FlatFile; +import org.jrimum.texgit.TexgitException; +import org.jrimum.texgit.language.MetaTexgit; + + + +public class TGManager { + + @SuppressWarnings("unchecked") + public static org.jrimum.texgit.FlatFile buildFlatFile(File xmlDef) { + + org.jrimum.texgit.FlatFile iFlatFile = null; + + try { + + MetaTexgit tgMeta = TGXMLReader.parse(xmlDef); + + FlatFile ff = Builder4FlatFile.build(tgMeta.getFlatFile()); + + iFlatFile = ff; + + } catch (Exception e) { + throw new TexgitException(e); + } + + return iFlatFile; + } + +} \ No newline at end of file diff --git a/src/br/com/nordestefomento/jrimum/texgit/engine/TGSchemaValidator.java b/src/org/jrimum/texgit/engine/TGSchemaValidator.java similarity index 90% rename from src/br/com/nordestefomento/jrimum/texgit/engine/TGSchemaValidator.java rename to src/org/jrimum/texgit/engine/TGSchemaValidator.java index d3ee6d2..809a0a4 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/engine/TGSchemaValidator.java +++ b/src/org/jrimum/texgit/engine/TGSchemaValidator.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit.engine; +package org.jrimum.texgit.engine; import javax.xml.bind.ValidationEvent; import javax.xml.bind.ValidationEventHandler; diff --git a/src/br/com/nordestefomento/jrimum/texgit/engine/TGXMLReader.java b/src/org/jrimum/texgit/engine/TGXMLReader.java similarity index 78% rename from src/br/com/nordestefomento/jrimum/texgit/engine/TGXMLReader.java rename to src/org/jrimum/texgit/engine/TGXMLReader.java index 3183240..711a721 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/engine/TGXMLReader.java +++ b/src/org/jrimum/texgit/engine/TGXMLReader.java @@ -1,6 +1,6 @@ -package br.com.nordestefomento.jrimum.texgit.engine; +package org.jrimum.texgit.engine; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; import java.io.File; @@ -13,11 +13,11 @@ import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; +import org.jrimum.texgit.Texgit; +import org.jrimum.texgit.TexgitException; +import org.jrimum.texgit.language.MetaTexgit; import org.xml.sax.SAXException; -import br.com.nordestefomento.jrimum.texgit.Texgit; -import br.com.nordestefomento.jrimum.texgit.TexgitException; -import br.com.nordestefomento.jrimum.texgit.language.MetaTexgit; class TGXMLReader { diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/EnumFormats.java b/src/org/jrimum/texgit/language/EnumFormats.java similarity index 93% rename from src/br/com/nordestefomento/jrimum/texgit/language/EnumFormats.java rename to src/org/jrimum/texgit/language/EnumFormats.java index 7e7580e..0384a7c 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/EnumFormats.java +++ b/src/org/jrimum/texgit/language/EnumFormats.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlEnum; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/EnumFormatsTypes.java b/src/org/jrimum/texgit/language/EnumFormatsTypes.java similarity index 91% rename from src/br/com/nordestefomento/jrimum/texgit/language/EnumFormatsTypes.java rename to src/org/jrimum/texgit/language/EnumFormatsTypes.java index 0550df7..5598362 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/EnumFormatsTypes.java +++ b/src/org/jrimum/texgit/language/EnumFormatsTypes.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlEnum; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/EnumPaddings.java b/src/org/jrimum/texgit/language/EnumPaddings.java similarity index 92% rename from src/br/com/nordestefomento/jrimum/texgit/language/EnumPaddings.java rename to src/org/jrimum/texgit/language/EnumPaddings.java index 7e8ee89..47dfa87 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/EnumPaddings.java +++ b/src/org/jrimum/texgit/language/EnumPaddings.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlEnum; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/EnumSide.java b/src/org/jrimum/texgit/language/EnumSide.java similarity index 91% rename from src/br/com/nordestefomento/jrimum/texgit/language/EnumSide.java rename to src/org/jrimum/texgit/language/EnumSide.java index d55ba67..ab18958 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/EnumSide.java +++ b/src/org/jrimum/texgit/language/EnumSide.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlEnum; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/EnumTypes.java b/src/org/jrimum/texgit/language/EnumTypes.java similarity index 93% rename from src/br/com/nordestefomento/jrimum/texgit/language/EnumTypes.java rename to src/org/jrimum/texgit/language/EnumTypes.java index 7582f91..4e8777d 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/EnumTypes.java +++ b/src/org/jrimum/texgit/language/EnumTypes.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlEnum; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaField.java b/src/org/jrimum/texgit/language/MetaField.java similarity index 94% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaField.java rename to src/org/jrimum/texgit/language/MetaField.java index e43342a..cd6bccc 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaField.java +++ b/src/org/jrimum/texgit/language/MetaField.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaFiller.java b/src/org/jrimum/texgit/language/MetaFiller.java similarity index 92% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaFiller.java rename to src/org/jrimum/texgit/language/MetaFiller.java index 17809c2..c2c38a5 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaFiller.java +++ b/src/org/jrimum/texgit/language/MetaFiller.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaFlatFile.java b/src/org/jrimum/texgit/language/MetaFlatFile.java similarity index 93% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaFlatFile.java rename to src/org/jrimum/texgit/language/MetaFlatFile.java index a7e2231..6c7f0d3 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaFlatFile.java +++ b/src/org/jrimum/texgit/language/MetaFlatFile.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaFormatter.java b/src/org/jrimum/texgit/language/MetaFormatter.java similarity index 92% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaFormatter.java rename to src/org/jrimum/texgit/language/MetaFormatter.java index 4e579ad..d8d00af 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaFormatter.java +++ b/src/org/jrimum/texgit/language/MetaFormatter.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaGroupFields.java b/src/org/jrimum/texgit/language/MetaGroupFields.java similarity index 94% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaGroupFields.java rename to src/org/jrimum/texgit/language/MetaGroupFields.java index 6e8d489..84cf384 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaGroupFields.java +++ b/src/org/jrimum/texgit/language/MetaGroupFields.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import java.util.ArrayList; import java.util.List; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaGroupRecords.java b/src/org/jrimum/texgit/language/MetaGroupRecords.java similarity index 93% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaGroupRecords.java rename to src/org/jrimum/texgit/language/MetaGroupRecords.java index 4988a34..e2eec97 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaGroupRecords.java +++ b/src/org/jrimum/texgit/language/MetaGroupRecords.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import java.util.ArrayList; import java.util.List; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaLayout.java b/src/org/jrimum/texgit/language/MetaLayout.java similarity index 92% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaLayout.java rename to src/org/jrimum/texgit/language/MetaLayout.java index 37565a6..3dae4f1 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaLayout.java +++ b/src/org/jrimum/texgit/language/MetaLayout.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaOrderedField.java b/src/org/jrimum/texgit/language/MetaOrderedField.java similarity index 90% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaOrderedField.java rename to src/org/jrimum/texgit/language/MetaOrderedField.java index 09a6290..2a0d97e 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaOrderedField.java +++ b/src/org/jrimum/texgit/language/MetaOrderedField.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaRecord.java b/src/org/jrimum/texgit/language/MetaRecord.java similarity index 94% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaRecord.java rename to src/org/jrimum/texgit/language/MetaRecord.java index 6efc7cc..8a8490b 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaRecord.java +++ b/src/org/jrimum/texgit/language/MetaRecord.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/MetaTexgit.java b/src/org/jrimum/texgit/language/MetaTexgit.java similarity index 92% rename from src/br/com/nordestefomento/jrimum/texgit/language/MetaTexgit.java rename to src/org/jrimum/texgit/language/MetaTexgit.java index 1bb9318..5849e1d 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/MetaTexgit.java +++ b/src/org/jrimum/texgit/language/MetaTexgit.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/ObjectFactory.java b/src/org/jrimum/texgit/language/ObjectFactory.java similarity index 94% rename from src/br/com/nordestefomento/jrimum/texgit/language/ObjectFactory.java rename to src/org/jrimum/texgit/language/ObjectFactory.java index 71f7d09..0bb33f5 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/ObjectFactory.java +++ b/src/org/jrimum/texgit/language/ObjectFactory.java @@ -5,7 +5,7 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlElementDecl; diff --git a/src/br/com/nordestefomento/jrimum/texgit/language/package-info.java b/src/org/jrimum/texgit/language/package-info.java similarity index 87% rename from src/br/com/nordestefomento/jrimum/texgit/language/package-info.java rename to src/org/jrimum/texgit/language/package-info.java index c425a8b..2315ae0 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/language/package-info.java +++ b/src/org/jrimum/texgit/language/package-info.java @@ -8,5 +8,5 @@ // @javax.xml.bind.annotation.XmlSchema(namespace = "http://gilmatryx.googlepages.com/Texgit") -package br.com.nordestefomento.jrimum.texgit.language; +package org.jrimum.texgit.language; diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/AbstractStringOfFields.java b/src/org/jrimum/texgit/type/AbstractStringOfFields.java similarity index 89% rename from src/br/com/nordestefomento/jrimum/texgit/type/AbstractStringOfFields.java rename to src/org/jrimum/texgit/type/AbstractStringOfFields.java index 38b72e9..85c0440 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit.type; +package org.jrimum.texgit.type; import java.util.ArrayList; import java.util.Collection; @@ -8,8 +8,8 @@ import org.apache.commons.lang.StringUtils; -import br.com.nordestefomento.jrimum.utilix.ObjectUtil; -import br.com.nordestefomento.jrimum.utilix.TextStream; +import org.jrimum.utilix.ObjectUtil; +import org.jrimum.utilix.TextStream; @SuppressWarnings("serial") public abstract class AbstractStringOfFields> implements TextStream, List, Cloneable{ @@ -68,7 +68,7 @@ protected AbstractStringOfFields clone() throws CloneNotSupportedException { * cada subclasse. *

* - * @see br.com.nordestefomento.jrimum.utilix.IReadWriteStream#read(java.lang.Object) + * @see org.jrimum.utilix.IReadWriteStream#read(java.lang.Object) */ public abstract void read(String lineOfField); @@ -77,7 +77,7 @@ protected AbstractStringOfFields clone() throws CloneNotSupportedException { * Escreve os campos na ordem em que estão dispostos na lista em uma única linha (string). *

* - * @see br.com.nordestefomento.jrimum.utilix.IReadWriteStream#write() + * @see org.jrimum.utilix.IReadWriteStream#write() */ public String write() { diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/Field.java b/src/org/jrimum/texgit/type/Field.java similarity index 79% rename from src/br/com/nordestefomento/jrimum/texgit/type/Field.java rename to src/org/jrimum/texgit/type/Field.java index 80d9e48..10666b9 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/Field.java +++ b/src/org/jrimum/texgit/type/Field.java @@ -1,8 +1,8 @@ -package br.com.nordestefomento.jrimum.texgit.type; +package org.jrimum.texgit.type; import java.text.Format; -import br.com.nordestefomento.jrimum.utilix.TextStream; +import org.jrimum.utilix.TextStream; public interface Field extends TextStream, Cloneable{ diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/Fixed.java b/src/org/jrimum/texgit/type/Fixed.java similarity index 82% rename from src/br/com/nordestefomento/jrimum/texgit/type/Fixed.java rename to src/org/jrimum/texgit/type/Fixed.java index ffd0834..a0b35d3 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/Fixed.java +++ b/src/org/jrimum/texgit/type/Fixed.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit.type; +package org.jrimum.texgit.type; public interface Fixed { diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/FixedField.java b/src/org/jrimum/texgit/type/FixedField.java similarity index 63% rename from src/br/com/nordestefomento/jrimum/texgit/type/FixedField.java rename to src/org/jrimum/texgit/type/FixedField.java index 6b3af6b..e5cdd9e 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/FixedField.java +++ b/src/org/jrimum/texgit/type/FixedField.java @@ -1,6 +1,6 @@ -package br.com.nordestefomento.jrimum.texgit.type; +package org.jrimum.texgit.type; -import br.com.nordestefomento.jrimum.texgit.type.component.Filler; +import org.jrimum.texgit.type.component.Filler; public interface FixedField extends Field, FixedLength{ diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/FixedLength.java b/src/org/jrimum/texgit/type/FixedLength.java similarity index 59% rename from src/br/com/nordestefomento/jrimum/texgit/type/FixedLength.java rename to src/org/jrimum/texgit/type/FixedLength.java index ae9e3ab..b3dd129 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/FixedLength.java +++ b/src/org/jrimum/texgit/type/FixedLength.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit.type; +package org.jrimum.texgit.type; public interface FixedLength extends Fixed{ diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/FixedSize.java b/src/org/jrimum/texgit/type/FixedSize.java similarity index 58% rename from src/br/com/nordestefomento/jrimum/texgit/type/FixedSize.java rename to src/org/jrimum/texgit/type/FixedSize.java index c48be95..312f02f 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/FixedSize.java +++ b/src/org/jrimum/texgit/type/FixedSize.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit.type; +package org.jrimum.texgit.type; public interface FixedSize extends Fixed{ diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/BlockOfFields.java b/src/org/jrimum/texgit/type/component/BlockOfFields.java similarity index 84% rename from src/br/com/nordestefomento/jrimum/texgit/type/component/BlockOfFields.java rename to src/org/jrimum/texgit/type/component/BlockOfFields.java index 1245217..d95a4d3 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/org/jrimum/texgit/type/component/BlockOfFields.java @@ -1,10 +1,12 @@ -package br.com.nordestefomento.jrimum.texgit.type.component; +package org.jrimum.texgit.type.component; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; -import br.com.nordestefomento.jrimum.texgit.type.AbstractStringOfFields; -import br.com.nordestefomento.jrimum.texgit.type.FixedLength; -import br.com.nordestefomento.jrimum.texgit.type.FixedSize; -import br.com.nordestefomento.jrimum.utilix.ObjectUtil; +import static org.jrimum.utilix.ObjectUtil.isNotNull; + +import org.jrimum.texgit.type.AbstractStringOfFields; +import org.jrimum.texgit.type.FixedLength; +import org.jrimum.texgit.type.FixedSize; + +import org.jrimum.utilix.ObjectUtil; @SuppressWarnings("serial") public class BlockOfFields extends AbstractStringOfFields> implements FixedSize, FixedLength{ diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/CommonFiller.java b/src/org/jrimum/texgit/type/component/CommonFiller.java similarity index 83% rename from src/br/com/nordestefomento/jrimum/texgit/type/component/CommonFiller.java rename to src/org/jrimum/texgit/type/component/CommonFiller.java index 981ca88..a0c4f70 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/CommonFiller.java +++ b/src/org/jrimum/texgit/type/component/CommonFiller.java @@ -1,6 +1,6 @@ -package br.com.nordestefomento.jrimum.texgit.type.component; +package org.jrimum.texgit.type.component; -import br.com.nordestefomento.jrimum.utilix.StringUtil; +import org.jrimum.utilix.StringUtil; public enum CommonFiller { diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/Field.java b/src/org/jrimum/texgit/type/component/Field.java similarity index 90% rename from src/br/com/nordestefomento/jrimum/texgit/type/component/Field.java rename to src/org/jrimum/texgit/type/component/Field.java index c0235ec..b783b5b 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/Field.java +++ b/src/org/jrimum/texgit/type/component/Field.java @@ -1,6 +1,6 @@ -package br.com.nordestefomento.jrimum.texgit.type.component; +package org.jrimum.texgit.type.component; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.apache.commons.lang.StringUtils.isBlank; import static org.apache.commons.lang.StringUtils.isNumeric; @@ -14,12 +14,12 @@ import org.apache.commons.lang.StringUtils; -import br.com.nordestefomento.jrimum.utilix.DateUtil; -import br.com.nordestefomento.jrimum.utilix.ObjectUtil; -import br.com.nordestefomento.jrimum.utilix.TextStream; +import org.jrimum.utilix.DateUtil; +import org.jrimum.utilix.ObjectUtil; +import org.jrimum.utilix.TextStream; @SuppressWarnings("serial") -public class Field implements br.com.nordestefomento.jrimum.texgit.type.Field{ +public class Field implements org.jrimum.texgit.type.Field{ /** *

diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/Filler.java b/src/org/jrimum/texgit/type/component/Filler.java similarity index 93% rename from src/br/com/nordestefomento/jrimum/texgit/type/component/Filler.java rename to src/org/jrimum/texgit/type/component/Filler.java index 7e9d305..7b076c7 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/Filler.java +++ b/src/org/jrimum/texgit/type/component/Filler.java @@ -28,15 +28,15 @@ */ -package br.com.nordestefomento.jrimum.texgit.type.component; +package org.jrimum.texgit.type.component; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.io.Serializable; import org.apache.commons.lang.StringUtils; -import br.com.nordestefomento.jrimum.utilix.TextStream; +import org.jrimum.utilix.TextStream; /** *

diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/FixedField.java b/src/org/jrimum/texgit/type/component/FixedField.java similarity index 81% rename from src/br/com/nordestefomento/jrimum/texgit/type/component/FixedField.java rename to src/org/jrimum/texgit/type/component/FixedField.java index 2e607e7..0766855 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/FixedField.java +++ b/src/org/jrimum/texgit/type/component/FixedField.java @@ -1,16 +1,16 @@ -package br.com.nordestefomento.jrimum.texgit.type.component; +package org.jrimum.texgit.type.component; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.text.Format; -import br.com.nordestefomento.jrimum.utilix.ObjectUtil; +import org.jrimum.utilix.ObjectUtil; @SuppressWarnings("serial") -public class FixedField extends Field implements br.com.nordestefomento.jrimum.texgit.type.FixedField{ +public class FixedField extends Field implements org.jrimum.texgit.type.FixedField{ /** *

@@ -82,7 +82,7 @@ public FixedField clone() throws CloneNotSupportedException { } /** - * @see br.com.nordestefomento.jrimum.texgit.type.component.Field#read(java.lang.String) + * @see org.jrimum.texgit.type.component.Field#read(java.lang.String) */ @Override public void read(String str) { @@ -98,7 +98,7 @@ public void read(String str) { } /** - * @see br.com.nordestefomento.jrimum.texgit.type.component.Field#write() + * @see org.jrimum.texgit.type.component.Field#write() */ @Override public String write() { diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/FlatFile.java b/src/org/jrimum/texgit/type/component/FlatFile.java similarity index 73% rename from src/br/com/nordestefomento/jrimum/texgit/type/component/FlatFile.java rename to src/org/jrimum/texgit/type/component/FlatFile.java index b8558b9..37c59d9 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/FlatFile.java +++ b/src/org/jrimum/texgit/type/component/FlatFile.java @@ -1,7 +1,7 @@ -package br.com.nordestefomento.jrimum.texgit.type.component; +package org.jrimum.texgit.type.component; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNull; import static org.apache.commons.lang.StringUtils.isNotBlank; import java.util.ArrayList; @@ -11,7 +11,7 @@ @SuppressWarnings("serial") -public class FlatFile implements br.com.nordestefomento.jrimum.texgit.FlatFile{ +public class FlatFile implements org.jrimum.texgit.FlatFile{ private List records; @@ -50,7 +50,7 @@ public boolean isRepitable(String idName){ return (isNotNull(repitablesRecords) && !repitablesRecords.isEmpty() && repitablesRecords.contains(idName)); } - public br.com.nordestefomento.jrimum.texgit.Record createRecord(String idName){ + public org.jrimum.texgit.Record createRecord(String idName){ return recordFactory.create(idName); } @@ -155,7 +155,7 @@ public List write() { Record rec = null; - for(br.com.nordestefomento.jrimum.texgit.Record record : getRecords(id)){ + for(org.jrimum.texgit.Record record : getRecords(id)){ rec = Record.class.cast(record); @@ -180,7 +180,7 @@ public List write() { } @Override - public void addRecord(br.com.nordestefomento.jrimum.texgit.Record record) { + public void addRecord(org.jrimum.texgit.Record record) { if(isNotNull(record)){ Record rec = Record.class.cast(record); @@ -189,9 +189,9 @@ public void addRecord(br.com.nordestefomento.jrimum.texgit.Record record) { } @Override - public Collection getRecords(String idName) { + public Collection getRecords(String idName) { - List secRecords = new ArrayList(); + List secRecords = new ArrayList(); if (isNotBlank(idName)) { if (isRepitable(idName)) { @@ -208,37 +208,37 @@ public Collection getRecords(String } @Override - public void addAllRecords(Collection records) { + public void addAllRecords(Collection records) { // TODO Auto-generated method stub } @Override - public void addRecords(String idName, Collection records) { + public void addRecords(String idName, Collection records) { // TODO Auto-generated method stub } @Override - public Collection getAllRecords() { + public Collection getAllRecords() { // TODO Auto-generated method stub return null; } @Override - public br.com.nordestefomento.jrimum.texgit.Record removeRecord(String idName) { + public org.jrimum.texgit.Record removeRecord(String idName) { // TODO Auto-generated method stub return null; } @Override - public void setAllRecords(Collection records) { + public void setAllRecords(Collection records) { // TODO Auto-generated method stub } @Override - public void setRecords(String idName, Collection records) { + public void setRecords(String idName, Collection records) { // TODO Auto-generated method stub } diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/Record.java b/src/org/jrimum/texgit/type/component/Record.java similarity index 81% rename from src/br/com/nordestefomento/jrimum/texgit/type/component/Record.java rename to src/org/jrimum/texgit/type/component/Record.java index 0e30f00..60c03f3 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/Record.java +++ b/src/org/jrimum/texgit/type/component/Record.java @@ -1,18 +1,19 @@ -package br.com.nordestefomento.jrimum.texgit.type.component; +package org.jrimum.texgit.type.component; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNull; import static org.apache.commons.lang.StringUtils.isNotBlank; import java.util.ArrayList; import java.util.List; import java.util.Set; -import br.com.nordestefomento.jrimum.texgit.type.Field; +import org.jrimum.texgit.type.Field; + @SuppressWarnings("serial") -public class Record extends BlockOfFields implements br.com.nordestefomento.jrimum.texgit.Record{ +public class Record extends BlockOfFields implements org.jrimum.texgit.Record{ private String name; @@ -24,7 +25,7 @@ public class Record extends BlockOfFields implements br.com.nordestefomento.jrim private boolean headOfGroup; - private List innerRecords; + private List innerRecords; private Set repitablesRecords; @@ -66,9 +67,9 @@ public FixedField readID(String lineRecord) { return ffID; } - public br.com.nordestefomento.jrimum.texgit.type.FixedField getField(String fieldName) { + public org.jrimum.texgit.type.FixedField getField(String fieldName) { - br.com.nordestefomento.jrimum.texgit.type.FixedField field = null; + org.jrimum.texgit.type.FixedField field = null; if (isNotBlank(fieldName)) if (!getFields().isEmpty()) @@ -86,7 +87,7 @@ public boolean isMyField(String idName){ if (isNotBlank(idName)) { if(!getFields().isEmpty()) - for(br.com.nordestefomento.jrimum.texgit.type.Field f : getFields()) + for(org.jrimum.texgit.type.Field f : getFields()) if(idName.equals(f.getName())){ is = true; break; @@ -222,7 +223,7 @@ public Record getRecord(String idName){ if (isNotBlank(idName)) { if (!isRepitable(idName)){ if (!getInnerRecords().isEmpty()) { - for (br.com.nordestefomento.jrimum.texgit.Record iRec : getInnerRecords()) { + for (org.jrimum.texgit.Record iRec : getInnerRecords()) { Record rec = (Record) iRec; if (idName.equals(rec.getName())) record = rec; @@ -241,7 +242,7 @@ public List getRecords(String idName) { if (isNotBlank(idName)) { if (isRepitable(idName)) { if (!getInnerRecords().isEmpty()) { - for (br.com.nordestefomento.jrimum.texgit.Record iRec : getInnerRecords()) { + for (org.jrimum.texgit.Record iRec : getInnerRecords()) { Record rec = (Record) iRec; if (idName.equals(rec.getName())) secRecords.add(rec); @@ -270,11 +271,11 @@ public boolean isMyRecord(String idName){ } @Override - public void addInnerRecord(br.com.nordestefomento.jrimum.texgit.Record record) { + public void addInnerRecord(org.jrimum.texgit.Record record) { if(isNotNull(record)){ if(isNull(this.innerRecords)) - this.innerRecords = new ArrayList(); + this.innerRecords = new ArrayList(); if(isMyRecord(Record.class.cast(record).getName())) this.innerRecords.add(record); @@ -285,7 +286,7 @@ public void addInnerRecord(br.com.nordestefomento.jrimum.texgit.Record record) { } @Override - public List getInnerRecords() { + public List getInnerRecords() { return this.innerRecords; } @@ -296,7 +297,7 @@ public G getValue(String fieldName) { G value = null; - br.com.nordestefomento.jrimum.texgit.type.Field f = getField(fieldName); + org.jrimum.texgit.type.Field f = getField(fieldName); if(isNotNull(f)) value = (G) f.getValue(); @@ -308,7 +309,7 @@ public G getValue(String fieldName) { @Override public void setValue(String fieldName, G value) { - br.com.nordestefomento.jrimum.texgit.type.Field f = (Field) getField(fieldName); + org.jrimum.texgit.type.Field f = (Field) getField(fieldName); if(isNotNull(f)) f.setValue(value); diff --git a/src/org/jrimum/texgit/type/component/RecordFactory.java b/src/org/jrimum/texgit/type/component/RecordFactory.java new file mode 100644 index 0000000..694913f --- /dev/null +++ b/src/org/jrimum/texgit/type/component/RecordFactory.java @@ -0,0 +1,8 @@ +package org.jrimum.texgit.type.component; + +import org.jrimum.texgit.Record; + +public interface RecordFactory { + + public abstract G create(String name); +} diff --git a/src/br/com/nordestefomento/jrimum/texgit/type/component/Side.java b/src/org/jrimum/texgit/type/component/Side.java similarity index 64% rename from src/br/com/nordestefomento/jrimum/texgit/type/component/Side.java rename to src/org/jrimum/texgit/type/component/Side.java index eec625d..527938c 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/type/component/Side.java +++ b/src/org/jrimum/texgit/type/component/Side.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit.type.component; +package org.jrimum.texgit.type.component; /** diff --git a/src/br/com/nordestefomento/jrimum/texgit/util/FileUtil.java b/src/org/jrimum/texgit/util/FileUtil.java similarity index 93% rename from src/br/com/nordestefomento/jrimum/texgit/util/FileUtil.java rename to src/org/jrimum/texgit/util/FileUtil.java index d740a77..28a43d2 100644 --- a/src/br/com/nordestefomento/jrimum/texgit/util/FileUtil.java +++ b/src/org/jrimum/texgit/util/FileUtil.java @@ -1,4 +1,4 @@ -package br.com.nordestefomento.jrimum.texgit.util; +package org.jrimum.texgit.util; import java.io.BufferedReader; import java.io.BufferedWriter; diff --git a/src/br/com/nordestefomento/jrimum/utilix/DateUtil.java b/src/org/jrimum/utilix/DateUtil.java similarity index 95% rename from src/br/com/nordestefomento/jrimum/utilix/DateUtil.java rename to src/org/jrimum/utilix/DateUtil.java index 322bc1c..7dcb3a5 100644 --- a/src/br/com/nordestefomento/jrimum/utilix/DateUtil.java +++ b/src/org/jrimum/utilix/DateUtil.java @@ -27,9 +27,9 @@ * */ -package br.com.nordestefomento.jrimum.utilix; +package org.jrimum.utilix; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.io.Serializable; import java.text.DateFormat; diff --git a/src/br/com/nordestefomento/jrimum/utilix/ObjectUtil.java b/src/org/jrimum/utilix/ObjectUtil.java similarity index 96% rename from src/br/com/nordestefomento/jrimum/utilix/ObjectUtil.java rename to src/org/jrimum/utilix/ObjectUtil.java index 949cf11..3f12dc0 100644 --- a/src/br/com/nordestefomento/jrimum/utilix/ObjectUtil.java +++ b/src/org/jrimum/utilix/ObjectUtil.java @@ -27,7 +27,7 @@ * */ -package br.com.nordestefomento.jrimum.utilix; +package org.jrimum.utilix; import java.io.Serializable; import java.util.Collection; diff --git a/src/br/com/nordestefomento/jrimum/utilix/ReadWriteStream.java b/src/org/jrimum/utilix/ReadWriteStream.java similarity index 94% rename from src/br/com/nordestefomento/jrimum/utilix/ReadWriteStream.java rename to src/org/jrimum/utilix/ReadWriteStream.java index 2b959a2..f4671cb 100644 --- a/src/br/com/nordestefomento/jrimum/utilix/ReadWriteStream.java +++ b/src/org/jrimum/utilix/ReadWriteStream.java @@ -27,7 +27,7 @@ * */ -package br.com.nordestefomento.jrimum.utilix; +package org.jrimum.utilix; import java.io.Serializable; diff --git a/src/br/com/nordestefomento/jrimum/utilix/StringUtil.java b/src/org/jrimum/utilix/StringUtil.java similarity index 99% rename from src/br/com/nordestefomento/jrimum/utilix/StringUtil.java rename to src/org/jrimum/utilix/StringUtil.java index f28a5bc..f186d96 100644 --- a/src/br/com/nordestefomento/jrimum/utilix/StringUtil.java +++ b/src/org/jrimum/utilix/StringUtil.java @@ -27,9 +27,9 @@ * */ -package br.com.nordestefomento.jrimum.utilix; +package org.jrimum.utilix; -import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.io.Serializable; diff --git a/src/br/com/nordestefomento/jrimum/utilix/TextStream.java b/src/org/jrimum/utilix/TextStream.java similarity index 94% rename from src/br/com/nordestefomento/jrimum/utilix/TextStream.java rename to src/org/jrimum/utilix/TextStream.java index 36b5f27..8add4e7 100644 --- a/src/br/com/nordestefomento/jrimum/utilix/TextStream.java +++ b/src/org/jrimum/utilix/TextStream.java @@ -28,7 +28,7 @@ */ -package br.com.nordestefomento.jrimum.utilix; +package org.jrimum.utilix; /** * From 19a1aefcf072eeda778611ae403fd604689c70e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B4mulo=20Augusto?= Date: Sun, 11 Jul 2010 20:48:14 +0000 Subject: [PATCH 03/87] Ticket [jri:r32 #32]: Estrutura maven migrada para milestone Helio. --- .classpath | 10 +- .project | 6 + .settings/org.eclipse.core.resources.prefs | 3 +- .settings/org.eclipse.jdt.core.prefs | 9 +- .settings/org.maven.ide.eclipse.prefs | 9 + commons-lang-2.4.jar | Bin 261809 -> 0 bytes log4j-1.2.15.jar | Bin 391834 -> 0 bytes pom.xml | 88 +++ .../java}/org/jrimum/texgit/FlatFile.java | 0 .../java}/org/jrimum/texgit/IFlatFile.java | 0 .../java}/org/jrimum/texgit/IRecord.java | 0 .../java}/org/jrimum/texgit/Record.java | 0 .../java}/org/jrimum/texgit/Texgit.java | 2 +- .../org/jrimum/texgit/TexgitException.java | 0 .../org/jrimum/texgit/TextFileStream.java | 0 .../texgit/engine/Builder4FixedField.java | 3 +- .../texgit/engine/Builder4FlatFile.java | 0 .../jrimum/texgit/engine/Builder4Record.java | 0 .../jrimum/texgit/engine/Factory4Record.java | 3 +- .../texgit/engine/TGLanguageException.java | 0 .../org/jrimum/texgit/engine/TGManager.java | 0 .../texgit/engine/TGSchemaValidator.java | 1 - .../org/jrimum/texgit/engine/TGXMLReader.java | 2 +- .../jrimum/texgit/language/EnumFormats.java | 0 .../texgit/language/EnumFormatsTypes.java | 0 .../jrimum/texgit/language/EnumPaddings.java | 0 .../org/jrimum/texgit/language/EnumSide.java | 0 .../org/jrimum/texgit/language/EnumTypes.java | 0 .../org/jrimum/texgit/language/MetaField.java | 0 .../jrimum/texgit/language/MetaFiller.java | 0 .../jrimum/texgit/language/MetaFlatFile.java | 0 .../jrimum/texgit/language/MetaFormatter.java | 0 .../texgit/language/MetaGroupFields.java | 1 + .../texgit/language/MetaGroupRecords.java | 1 + .../jrimum/texgit/language/MetaLayout.java | 0 .../texgit/language/MetaOrderedField.java | 0 .../jrimum/texgit/language/MetaRecord.java | 0 .../jrimum/texgit/language/MetaTexgit.java | 0 .../jrimum/texgit/language/ObjectFactory.java | 0 .../jrimum/texgit/language/package-info.java | 0 .../texgit/type/AbstractStringOfFields.java | 24 - .../java}/org/jrimum/texgit/type/Field.java | 0 .../java}/org/jrimum/texgit/type/Fixed.java | 0 .../org/jrimum/texgit/type/FixedField.java | 0 .../org/jrimum/texgit/type/FixedLength.java | 0 .../org/jrimum/texgit/type/FixedSize.java | 0 .../texgit/type/component/BlockOfFields.java | 2 - .../texgit/type/component/CommonFiller.java | 0 .../jrimum/texgit/type/component/Field.java | 5 +- .../jrimum/texgit/type/component/Filler.java | 1 - .../texgit/type/component/FixedField.java | 4 - .../texgit/type/component/FlatFile.java | 12 +- .../jrimum/texgit/type/component/Record.java | 6 +- .../texgit/type/component/RecordFactory.java | 0 .../jrimum/texgit/type/component/Side.java | 0 .../org/jrimum/texgit/util/FileUtil.java | 0 .../resources}/TexgitSchema.xsd | 0 src/org/jrimum/utilix/DateUtil.java | 271 -------- src/org/jrimum/utilix/ObjectUtil.java | 624 ------------------ src/org/jrimum/utilix/ReadWriteStream.java | 71 -- src/org/jrimum/utilix/StringUtil.java | 337 ---------- src/org/jrimum/utilix/TextStream.java | 50 -- 62 files changed, 124 insertions(+), 1421 deletions(-) create mode 100644 .settings/org.maven.ide.eclipse.prefs delete mode 100644 commons-lang-2.4.jar delete mode 100644 log4j-1.2.15.jar create mode 100644 pom.xml rename src/{ => main/java}/org/jrimum/texgit/FlatFile.java (100%) rename src/{ => main/java}/org/jrimum/texgit/IFlatFile.java (100%) rename src/{ => main/java}/org/jrimum/texgit/IRecord.java (100%) rename src/{ => main/java}/org/jrimum/texgit/Record.java (100%) rename src/{ => main/java}/org/jrimum/texgit/Texgit.java (95%) rename src/{ => main/java}/org/jrimum/texgit/TexgitException.java (100%) rename src/{ => main/java}/org/jrimum/texgit/TextFileStream.java (100%) rename src/{ => main/java}/org/jrimum/texgit/engine/Builder4FixedField.java (96%) rename src/{ => main/java}/org/jrimum/texgit/engine/Builder4FlatFile.java (100%) rename src/{ => main/java}/org/jrimum/texgit/engine/Builder4Record.java (100%) rename src/{ => main/java}/org/jrimum/texgit/engine/Factory4Record.java (95%) rename src/{ => main/java}/org/jrimum/texgit/engine/TGLanguageException.java (100%) rename src/{ => main/java}/org/jrimum/texgit/engine/TGManager.java (100%) rename src/{ => main/java}/org/jrimum/texgit/engine/TGSchemaValidator.java (94%) rename src/{ => main/java}/org/jrimum/texgit/engine/TGXMLReader.java (95%) rename src/{ => main/java}/org/jrimum/texgit/language/EnumFormats.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/EnumFormatsTypes.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/EnumPaddings.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/EnumSide.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/EnumTypes.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaField.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaFiller.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaFlatFile.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaFormatter.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaGroupFields.java (95%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaGroupRecords.java (96%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaLayout.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaOrderedField.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaRecord.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/MetaTexgit.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/ObjectFactory.java (100%) rename src/{ => main/java}/org/jrimum/texgit/language/package-info.java (100%) rename src/{ => main/java}/org/jrimum/texgit/type/AbstractStringOfFields.java (90%) rename src/{ => main/java}/org/jrimum/texgit/type/Field.java (100%) rename src/{ => main/java}/org/jrimum/texgit/type/Fixed.java (100%) rename src/{ => main/java}/org/jrimum/texgit/type/FixedField.java (100%) rename src/{ => main/java}/org/jrimum/texgit/type/FixedLength.java (100%) rename src/{ => main/java}/org/jrimum/texgit/type/FixedSize.java (100%) rename src/{ => main/java}/org/jrimum/texgit/type/component/BlockOfFields.java (94%) rename src/{ => main/java}/org/jrimum/texgit/type/component/CommonFiller.java (100%) rename src/{ => main/java}/org/jrimum/texgit/type/component/Field.java (94%) rename src/{ => main/java}/org/jrimum/texgit/type/component/Filler.java (95%) rename src/{ => main/java}/org/jrimum/texgit/type/component/FixedField.java (93%) rename src/{ => main/java}/org/jrimum/texgit/type/component/FlatFile.java (93%) rename src/{ => main/java}/org/jrimum/texgit/type/component/Record.java (95%) rename src/{ => main/java}/org/jrimum/texgit/type/component/RecordFactory.java (100%) rename src/{ => main/java}/org/jrimum/texgit/type/component/Side.java (100%) rename src/{ => main/java}/org/jrimum/texgit/util/FileUtil.java (100%) rename src/{resource => main/resources}/TexgitSchema.xsd (100%) delete mode 100644 src/org/jrimum/utilix/DateUtil.java delete mode 100644 src/org/jrimum/utilix/ObjectUtil.java delete mode 100644 src/org/jrimum/utilix/ReadWriteStream.java delete mode 100644 src/org/jrimum/utilix/StringUtil.java delete mode 100644 src/org/jrimum/utilix/TextStream.java diff --git a/.classpath b/.classpath index 7b47d45..c641afd 100644 --- a/.classpath +++ b/.classpath @@ -1,8 +1,10 @@ - + + + + - - - + + diff --git a/.project b/.project index 1307d54..395456c 100644 --- a/.project +++ b/.project @@ -15,8 +15,14 @@ + + org.maven.ide.eclipse.maven2Builder + + + + org.maven.ide.eclipse.maven2Nature org.eclipse.jdt.core.javanature org.eclipse.wst.common.project.facet.core.nature diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 31685be..cfaf892 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,4 +1,3 @@ -#Fri Oct 17 16:07:30 GMT-03:00 2008 +#Sun Jul 11 12:18:41 GMT-03:00 2010 eclipse.preferences.version=1 -encoding//src/resource/TexgitSchema.xsd=UTF-8 encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 7d1ffc5..90fc515 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,13 @@ -#Sun Aug 03 00:38:14 GMT-03:00 2008 +#Sun Jul 11 12:23:59 GMT-03:00 2010 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/.settings/org.maven.ide.eclipse.prefs b/.settings/org.maven.ide.eclipse.prefs new file mode 100644 index 0000000..ccb1269 --- /dev/null +++ b/.settings/org.maven.ide.eclipse.prefs @@ -0,0 +1,9 @@ +#Sun Jul 11 12:13:35 GMT-03:00 2010 +activeProfiles= +eclipse.preferences.version=1 +fullBuildGoals=process-test-resources +includeModules=false +resolveWorkspaceProjects=true +resourceFilterGoals=process-resources resources\:testResources +skipCompilerPlugin=true +version=1 diff --git a/commons-lang-2.4.jar b/commons-lang-2.4.jar deleted file mode 100644 index 532939ecab6b77ccb77af3635c55ff9752b70ab7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261809 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

kySdob_3;M!dHzD`;J2Rq2Z&d8UGhxV$ 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

yUq$ZicIfr0j^C5AT9_(?KOEnXG6_sk<}m&@u7M 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 K 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 WN(d%Sz)pYg&kZC$Y;~ZsgZvM{S*Lpd diff --git a/log4j-1.2.15.jar b/log4j-1.2.15.jar deleted file mode 100644 index c930a6ab4d4b73c1a6feb9e929091205664bb340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391834 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 z≫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

sl*CtvD7j$_;?KD zsAuI+(dW=lK42vSp-#RaCy1cuS!dS863zK)(VvVGdUy>KVR{t5jmsi-=rE-*@=MZ~ zeL6UzlxJt?-gw9|tc_bXrl)9jkde zr(J4WBDYpHLq6@RulS}P8gk^Pgh!TE8bXwk8#Cl*m^T4(b#vSweAl`%ET2y-El4F0 zVny|;Bt}IHIA(_w;-?f43(8+RV!W^*dHR1$6E{1>7_~k}G z(XqPcVUZdDQJl6o>Ksdjh}qDcHJc$sbK;4oB$`(gv4I!^j>!gk8!Co{aOrwMjkS`$ zDyD}|NC{zyB36V1-GR`WwGk%|a7sf57$!k=Q%{LIkK@rJ3;Sp%x#;rscsc;Z@k7E+ zn#|>{Qh4fRZ@kr_PtTG5*hPX+5Dn-|>9yg`ZKFrG=nUB8S+T%OiHu6$0vIEDF&Yrb zZK;H3WeQ_if4R_VHeuo6l$8;9mrd0C*kFYFB^HHdg^pEw0Q84zgIM@%Q5w7GzImzMT{ol6bkoe;K-9d`D~a5*u?HqkA2xLad4`v!*lNjVa-1YsWKu4ww)U zejjKG5Hy0aJp8fSBHwyG$`)S=y-$I7C>gE-k~X%p%o-D-hzXwAEEL=V5#3PF9B(6L z)hUS11!~@ias>LoPIf`T3tEe_?KXCXrtu+)J%%I}MLFrz7>}H?7phFHtVY+y0`5bZ z5(h;cgz1CXD;imFXm4S1KfnrR#)ZEfH(Rf%MnP8ysaNC!r@)w7?5G8SwK%p>#rtPJ zb%Ghq@X94b_RE#-L3erC3#)4`0>m8{&KPqL;LfbtJcUN8f)~oL(EM(l_Hk}qNTNLm zS1JqI{6W?SQ6G6G`lc=SWW*IdT}8NfS|MZ{ z9JbV-{6UUo)&Jf2&Mh&GvFuk^6OBnXV%$?{(_kzY*yBtI4ka=4?;G*+kt8ZzFJ@hp z#@;i}*Wz0DLA)0rIzz-kV_*F-f}pf3CGocdsckVj`*>w{4h#twL3699uyIqf+7?@Z z^|Y@6Uw#IgUtQL!g;ImUlM?X522EL-^4}do4AnA~p-m z+IRJCj*y|%V%XdgI#uA`5cj=cpc_+6p}mL9KZOi+g+0F@)6l|cYRJMw{Mq(G@esgL zBJQH6`$t;KN>#Ih^bZdR#{^CPW-41yqf0L)%B{}okK}womK?ArIH7lpu3St$IbN%) zFIf2yb-{v}+o~}Z>>BHJc!PF|*fj~7kohb<)3N~wPV8jT)2H%B5*C_b$+-40i}V*T z);Btu91OC%J3-s7)NAHN>}+n@cmM%oML7x8i~%qYxxpWAt$*+xMeyWfhvq7-M*33} z;VJ8D&jMAdz(jb`7}{?~!Gc+va(mox+)C)K>_Bm0)6gT9WUVNAhbFoYka{LJfWN38 zhYw=qxlmD8w4AuQQD+CLT_%zgyHC+&N^VcX7O_423(0Z~6sbNMNssPeL%oRO`~Hn# zU+kS9n8`9$eupYPR4^=2I@wgAJ4^@9p;+cRLH22O#@eY+fB&$hGI2L}d z%mI-hhTan_C(c-Lkg@?I5cdAg<_?!XvFU}rHG10A++a*@qjRpA(AEfoaiFBO3^x`` zG`h6_a@ttx%PQdxdY&`ZPDBV|AKw0^-UomE?$QxU7&FJBNsKp?Fl2$I7k^4w!r;zx zP}W+C@93hZ)l{Iqki|F*?yZ+KB2N*|lk@|?{``l|d-U2;txYODTT^a}C_2Ng$&Ta4#{LfRoDv%k@nSNp*cgbbT%ESlRpXFUg-h^}HFX$FF}^xyXT+ zh4b6cIKNh956sSdT|m$-k|k8-98eP9q!cm=f_L(wU%p*OKC|hP<=;>@jCIT4%*`#b zuY3BpMV|^_gl%4VzvipOjnMbt+sxW#`*(C4j zU2BAee|O2nCz`h0Y{Lg37~B(Q5Ubn)=KOBf;n;y!>Ikl0pfM=sj}AE1@R@cit4@lN zx(Sm~XNdiSX@o}X(u-xp1x648hJt&x?P(esg8;fBxBH*)%|34y6@_eLSL$tTCvkq-;Iaxf{Z?sr#kgG;5oL>9J+m0 zNHlYb?X1*Fg1w=-R#<8q_Oq@d$4(}8Y)#6_TLsa==RQV&^Uz;Q&MfGaFkT2^~ zkvv`kFI6BlnnNyG2cPR*JM_hM1B7(ziR=1rAlKaL250ACva8TuI*S`d{b;XZLI;)U zKOCe6d8G!sD?(q9?)Q|S2|YvkSIA3a4eG=6u3$dG3Bc}3NdqHE1M8)Le&i_w6_7pz zkw40*0_$H%195kD{$S|w#a|8H{bqoOR(cie_V;CEZwp9}zJ&yM3l2hsc&+1|k1i+q zW^4whONj-~{F_4HJY&#*IJMkrv|;v@mA-MlCG>qCtGxVe)9)40?qfBKqr9vV4OwtxwN&8-QIcvq64oDr=o7Zz7UMDI9_ z6!MP$7P~l=i)Dl7Jv-*3Z5d0eBf)M+U}EMp`pQ%+Gr!pv;KjXK2OxXN$OLTIGe=wY zV>`zkFwJ8@i^eHQEo#oejM8F_;h~Te{pLyEi<^U6z7z6C?ANF@ym4V~le>j2#P>gf ziZNTxFsb-a(C}hLtxbJjl&(fARSWl~jUbi)k7cFsaaBJ_RzH!k$*gYPsax7Df-jHH z;Ycv!(eKvsqHkXGq@RiwwOeDFvc*@_%1;gC3C9o{g&SuvC&^V~`dtxjG)k9gJROET z%9rUd9Z@<8g1FSFitUdKZ&a06M>)Q82Jp zG(fl>GQi8btRJ#>gpyPwy1G^^y2@EOgtuta@5-Ya&!ZbuQX__6CxTC~8G?Y%(!;YI zGciGYWZxUa-k$QO?%L2xRUCeE>MyI~Gw0^YZj*A&t@Q-xAzc8ZX}a3*29WBB&Caqr z*;}le<(Fh(=qJ;rCgL9n)G7ubwNZ&oJ1{*3tT^E;D7FGT6D(vY1l~2d+a)i`03kJD z^iSd1$%t*FUipYKBQ%bObs+~4Q*g4*K{n=1OW|s3@rf`cXB|Ff?|-J>6Ifr43gZx7 ztR%D~rXfqjya-A73FGoYrsda=8>Htb!DAT^?oOpo&;wksB~Ba?gDyXVYq?tguh9tVID?N@0;Nv;gg5f3@3X{IEhp zsT{RMibdZB5lP|;zfj=xhTsE+p<0;b82(jZo)Si-mK!y*e46v$~Q zQ8Jr%UKTU%A=iJI{XL?sdIFh`II$M>gYk~q6%Bi0oet48O+OLTaRNeH-)wX5!*Myy zO*Sbu!J|9%uj7*^2>xWfDSfU@>iRlD1wd3Au-u<|FaAN3?9sv3lP7mBFJ1a$pj6>d zq_`)d*Vj&{Cvf|B$-Gw;|MqR^$<$5OpM~^5ffW@~jXLiL4ULfK1`+vH@{F6X_|!L; z_*n%J{zwl;;sLXzyk{MCXhjd?51p~6J5PAOP>BJ_VtwMl?aR=egSQCBm=1SyXQ-_{ zj_DhttYH@#UO3dAe`4=4YSTMH69(i4h=_U$!mqgTzeG*8VygjygA(W{WB&{@Qrvs59=(~t+rlizlk9i>Yfd;z)d!S zc5@iQMf0%0!HwbIFvyu?Vj~)j@lqp|H5q6O(=zw}o;a60dwjl9oubeQ4t7wG?b*)z z9vgYRK3m$e`WPU{T{JzC#XyHR6~@ zvl9$f=>;kL{?ku-$LTX^9l_hTd12a0x?ST=7UidxRYQRw%7P%t5+6w7M3y|iE~@S$ z>vOZkUnnps+&dtA?V(gpxg2+{=peQ{6Uh@}^V;z?$6n9a) zLIvrdGSZP(qC(auQt{T>^!7Q_)+A$n3ossho~Rc#?jJQ?Ct=E;CKj+ZzI*yJPgum` z#4u=>&9kx4;k~XJ(FC_Mqo;kn13SalMn4-*&&IpqG`w^_ zzC@5|AkN%+i!i=BBp=y~TFv5dfM$^MRYS9sY5qqi?3ZT$aXO~?iB8JlRmnBRDluW& zQhO~I*utIyg=YEiMkTtJEic0F8@6)Zo%318F4o)|x^mvF^V!09fuw7rQ<9Eod3S=K z5AI;v;+-QtcYjE}I*y23`a_tN(GBp6`uP%_!z)ZD_re=S8ped?n4_!YXqfU>svF`8 zv5_4F0Vha_2;K$e+hF8Fd$t*$e^E%KF{f%2f+p2X1n4lRA|*j6`ysL=T7q!1C*I&8 z^*Tvj(DmV~W4b3k15!XR?TCS4xhJeWrh_Qn2jp<~UFaKc51BxOU?k%{bq2OKITNd*@{A1LuX5L#Ke2SKBPs;|{MugggEr;Zb8LTNnby}xw*tCg_nZV-| zFdY?aS`vN?_l+~t8>D8T*&sYqVnAdX9)7}ZswQxg#5eK}7Q6$J&VZm%evwwZVQWsj zD=t%z+M~j|g=IMGhUPcpZhW0L5blWJsexg*t*O8_`40?$3wHP9=j3NVu?;nEVIAx% zqyEOdt#CD0#rY$(5_J}1@@r9#Y1>7aIYIBlR0dF%@vlQPNfIG2=cS zzh}}`AN1r#rkIkxF<-VEUyfi!%ElcjzjIJSE3dv?-=b0SoeP*>)~kG6_PqwU>2W~2 zOy;l?XYJJy3YL*7SV{{&z0i(-){#BZUYhgKR83Xxrz{mDL?QhW=ZDn~6Q0s^k#Uv{z{4~6!L`JsHsV~ds$=6DyLrtrP3mOQ zHc%SO=uw=BjwgAr=q?L28Dw1$V(W6~sg0Ow!aGEC!UM>7)4{3{G$)4m&Cpzguyliv zpZ17ssuGsQ#z%Q5B`=k<`*qdT{Rx-n&lf1L2dBbZZP6Hyt}aslwCO^Y@xh!MAexx| zZa(K)E%mA)-pEgaLXBQoP>d%-$Hu-$tY8APSNUk`5MK+x`{9rhcSEfB+3hf#$!0vY zgnU)i0sPX;c`Xq8KqQD8*B1KVy7Sy2&*Bjtjway=cLIz0n5Az#qgR^HC*X@S6M_m^ zAWY17FML@6i8_Yi+c1yE9GWBvVLV>JIT`1sgx#HXEN_3XNGGbq z_+?`MWufvekjimf#kL-k!S3;WC3u!GZrOQj6O*$pkHz`ifjYHv2d>koia^z*j_~9b z)9TKRQ`2xKy3rHsQzsUOXl@|zdNiJE0nKY7%`1cG^A2G|k{XDLg+&g(q5+j-CrMV> z!hIs~JIgFV3CMn7YZx~El@ZTkkQiUG=W9jrJF{BT*5t{3$w4B$X(Byb2>SeQg2z1a z)K`+PSK+qpxEG`dBWK3carxL4#NT-DM4Q7yij0Io=nv8@F=K|UzIbip<>>Xeio4`Y zv*Rk1P?ST8#r;VM94wFzvB0B3PmlDQ5-f)7aGWr)B7Z=1b|M?lugw!T17mQ+CncH= zEKM4i#d5VDa7A-PeMXry2q7)~o?P6`@~F^vmJdUVEf)IoMO8cr#beJ;rU& z{62AqbkaopHR^ck$?!EcbA#xZ z*>>|$plIh&p7WNTU)p-1WJL@o1A8#lf+T@!!WIhYYM5g-O~J}|Y1pr&F3iDTejA*8 zL;JEfdY(z`v(cxtdWFBi_aKCFUl9dSQPhBI6|`!G>XbG4YxNP667crfoBRi6FAN=$W5X z3CVYu+n9GK$xO0NuG?H#pbi<~`J{aT=c`p~!5Oe~oqh0A3Bw zza`5p%5Gd-4GKO;b`lo9GIwGBGMXGL=FyLB5p;UuiZXj*X7i# z)12M*22SJuhH zBjA6U<1?GLqvIj)2IcR1&=cH^3|st9!ShO`fiQu}6U_-5vI=Qf7#kX#czD=|DV7)y z=71SI;m8p^oSEb*0qUhL(zWoS<)6o|t#bP!-^e^h?RcDm%hU=D(+hNZM(y#h=;P2RbCghytCR8g zyRR3|GG$jwK2az#V~DS#5|+GtL(TSaZwG(l!I;L$`<#bmBcE_U2i0wK5vlFc1Phx+ zg$5OZaw$MrHT>F_Vd53{kfmy>y-jVsGICJSiBVf^I|Kt88(m>2HA&5AzP+cA zn&=eFOD%B?ES?dM0zQnRH#&OlK0KCFttYG<`{ny*)TlyFQ!$+WM=8b2BtZ2^Zc4^_ zyn$zCM`^*xsa!B^f|sGv2Z<8vqKE3C&d55?oja9j0}WQDm}Ij}^>qbjwx|3m)hCN> z!g{{pWZj8&#DZUAxs;x^lRbPsGi`3vHYIO<{P0}J`9Rba+|7)-p(*;6%sNlMla`Z# zvb>DmKu++FE@9kQ#x&dU=191XC#DOcl_#B5wy3xIbXr{sEe>6(v4BlfQniAdQ;dX! zg=^#E$nFWj1VhD=dYFw2*%mjeX9WxYhKm{6_j(Ler4mK+%m3O_-9m9>>yDf)T4P zRAdw|5y>dzeVfpyZ%a&3oaH}Boy83W8@Ug+hL?DoyH*eVke}%Cbz#>u%5O9yUx|;o z1?h6{6-CeyFQ0xG4R0Lr{EhFa{#WF!gg2Fi2hpA@h#Fee%_B z;(rhTDW4c$7RC;6K)Whst3lW;O%+Jxt0Q;O3&i;qV?h^#BIV9+8bR+r5bqSJ5S@Wp zyM`Lj#g=M1ly;2!by6jPE8sQ6-YvAsl<6$?U*fh@w`=-ha$fy6dQ`BgxZmXZw^5v) zf$#$)Hxi9GDeI;EkeFi38Nrx1v6-TnR<%_&W}?-TO@u-~C{OxrTkdBJrn`DOG4DIu|GSg#zy^- zlxE&Um$bMg!+%ASZhl`Z$Be)X}~bgw>M;b~bhd5Z+j&?{xQ{N>woOqW>;FPqq)Rl)ARbjei-!t=3L#58}OB%-* zW5es|y34zV`g%0POr-2#bHK;gvi-_cqLs?uF?)FN1*wA$J1R4SP|@9(rP5>~u#DJ@ z-GbsbDA-cX9#F4J9%e{h&u-!Qcyf}%R&)ZRYm53+!jJ-RF2L36TVZE=C;RX#YqZSVsalBW4DXx%zO;#d(aNO|9TLe( zj0U7xT5Co$g#XbjG(uOu3l^{=Vq4yqf!8QhACbk;AJt&58SQ3UjtcTdh9|)huR(59 z7fXpWN2VvKlc)|yoakKHkMp14K1~Tfddmv0Kfrrm!c%3)VI*zuKn=csj8OGcX^3OH;6TAsb|jzu6Ffle zo)bP`OpxtUMezrg^4CvsNd3Xy8{*WZZI2O0xxwm$_}A5kIt%O4TDnep<4WJOoNq*r{ihmjx%xL`}`jY&$b40G13c=Dyy!A(xo*p(KnD!*rJ=$fZm zG$mdjVHlH}v_H^$Wp33=Owb&#c{dlGcxKPOwK+M8Z2?R20U*4I$Z+wGQJP6NJc52C z_d*hSA5`@_N0|ycqVH@bpUYC*6RHMeNQt zr=_nHBrx1N5pF5zN~B%N2kUAtgeS_NOW{tj>mfMCJ?(5wg%}xeGx?pL7`dq!kr$S? zWtPLU9lDFj7fell_M@XJOyN@Z>+QZbbY9_o-rHq$$02aMj| z_)>Fd7fG%M^&BC4wVxp_+&|Gk;F+=H|5n$gxLgi$KM9BP#w-$^h`)(mx1Zvp)Q>-iLRI)^Mg`?iAa za1D?LvDXWLxgotH+y67j+Q-q}U(+~4I!H@0Ww5kf7Cp|O=#8`WsRcesj9?9{f0B4@ zu$U>7?hj=RveCsGgqPdq+r=5A%TEg|cNzoj?GEDAmH+6wGY8&(b1D;5N2XYTXjr75 zCzRxmHDU+JYz1`cbp0uuN>$;(SdBGo3hr^BETCJkkHr_mN1iv7DY8=unyG$R2&<)1 z4Z)O)xLZk{cXDlSwzoBAWh$ZUW}YqIZvlTOf|=KHMZ1e$9>*PA7)EwSdq^fC z6DW^YUp5Ae<=8O-xZbek7#46mj3lEK)wbZVd3vwq#+a2f_$d-FvNH!`ahq%lIa=5d z+56Q>?RN7_8xwV9TJS`999b+q+AX<~v<@sj(MIg=E8uBtyK9Py4ll60D`LLSa3|Yo zT%+PAtZ2y(7unIT1!A~_L<-I^Yw1#+*G1~&Qy(Q=25uI!T_Of&qwW|hXPTkzre)q8 z_Q1}eJJ}@B&J@!t5dnLXwyUC}_Tn5bN9?iEj+FZiJJBU<{IvE#in)zxn z^{PyPRVBP1yZ(Nuj65O0_IJjJew`70SA~qPMR2c$Ft1DbkeLo2nOlhPX4aF0#BFX= z;M%|P{lsp~=%WM~HY;HSTxC`uMlSDRMPZ{B+2CeBgw309~||z+H1ELuNbuSg90> z(t~(QnLd#@o@GGnCZS9Hq}G8>}ORg9f$3ANW2b_3&@| z6lqQg@Vl8bnPrZ9fHZ$QzLm?O$iN#5*3*aH^?~K%Odl<6OF`uXe!t1|CJnLtlPtUT z)N}Ij=>QyX#D&YaQ9e^3z885#<2E}}md-TSAM@5=cdou`Gtoz+XM=nf@IM>ta!#k} zQ!F4LNG>2Cq5tKBXX0RQZe`)-Y{n@1-;vROcGPl4_C^-}x1p}p{;zMJz^R$}ZuW#p zHWE<{b5m#yOk^e)88kFRN+59!gKH+=;BQlkX@I6`4QwmJN?S*Zw$0^gi%fL~SmJ8i z=H_ahyTi4yM)$g!4d&M3&-SbN1H~_}Wq;pok2ROM_c`ae-jvhtk7Jco$+XQd;I0JB zzvue;WFuO@XfdF^9E{L++`6dy+I34_R)KK(6eg!Kjk*-evbDn2amqT#1=StW)-%9e zK^ijGeAL<{n&e=!8QRrocFHZXjoJ_x5T5V`1uhW-Hl;h*1=v0Er_U@VqJi>9amuzZ zcjkSH(J>&t%myUIIwhXjXvEZQGRUi)Q*#&&tQ}kX*TC_2@j$o76$AY5ct@TBuMc&; z@{WrIf>Y6{1Af4}Gd^NDy%4voZ^~8%|FEAmuYO?z*m>s$V7@x0j=}wQ*aQt6-!xY} z{C%6ZK;e2AsN3;VoA+EE1I+!)cbQxVrZn4BF?fFw zA#A3%$Vg|l{Dk|Ici$XA>XC9+e;KTwmg)D{fqeEitACPScc*aQJxm`Zvvbh^10=2G z9!8u`@{oMiw<(B#k^Op{Pxg?0`#VlJ|J{9u$yA3ZqCJe~0Lg;hmHk_sPyT`PkHvS; z$}h!eOxN$ESwVB0y^gNlPP0GhC+VwY^w-aJa)5zV{KB2W3rnh1yDq+RFIs?qpr3`D->Da1bhB)=Y;?8^y@JC|S7onHL=E?nH(R~#W_?(7etWU8 z%|*6rXk%h)v!$;xje5SL%grrf=^r55x|@bCCwIMGQ0Rtl{+G!_4|mgKQ^PPnE_c7Z zxf0aJ_B?8gq|!6EvWh+LtPbHhd~mDw!m`I_A^zg5t+~oWvW8#1sEd7fCo%H21;y^g zcl>xO8OAP7B(sxJXM_6DR9p`%CWG0I%FiS_cN5}qO>}?M6H^ms4JS(L+K*qSR;+x+ zw1J%fL3}L&1=)%>H*fhxD!I~L_3weFtxicdqmddXPpcvgNF?kv^(oC~M@H0|HVwgyq3WFhpn1hh zJ71ByS&Zk+Y{-7$O#Y)r8&uc$j|V#LpKmeuqY@D3PFHs(cw zo4pNgnM{uH6>*o1wwtdOc?H=*+RkjiBkWjTw-v2Vqe^S>1Dc!Y%+-$EX?vQ9``Txs zpIZ$@t|J#{<*K;z&Y(-1o{&O@0pA1>63W5hi_!)(D79@yRCt3*CU|@%Wt=qh2R6%k z;FqD`xXZ;5hi~II80)_qclx0L3>}Am^FrhD9n<*oa zSLZ{>I2kQPcWl+PLt~zpLh(V^JL-P{I{G|K;_wMD+@N8UsWJl>a^tx0&lI)tW=1A< z5*Niv#E=3HB1(aR8zXWmaQ;SPX3+Z59c^!hR`GrZ+%J_54QWkHv%%(nmU`l>!hIxZw;`iHw$UDfGN#*V9gMB)vD(JW*chz_6v|8d z=6j90AAUa<6BZW}f{>2*yG3sj=&SP#lS=5Y5?^TgZ52pbA%i7FF_4@^08MVrO~`$w zzC47Fm>FU(5XWoj^DK)=lCpAV{Q+SZ)vL?IPo#CpT(;DSjd|5>jI*mfACFsd-~wO! zjA9X#UD1RKfs;Ivw(o z-Y#w3x?~6u&xRF`)(5uK@l`-pQgzxe65np?7xrI<7)J*rP25}AQ2MQv80XSpHIdzt z;-?nrge6o8_<7`%J~@TUPt=rvNydv$)|7zR{`vO|il68Jc;2ZQy-%UCmo@4b!^AgXY~30d>#d zWIo`V^#}a>wX7Blrjq5o{xf=_-Wlm&Gj}qR512P3;OdjpU+%O&`xEiIeB$SD&F#B= z;^*Ke>q*6Xp(LZkQ!84d#4}f43@4S;X7N3=GHDdxvN|HhJreJM5wW99mHrRMOr;6e zQAOt@N4Xbs!ZjCWmvxh4ZRJC_$QoPjxr*RPQKv%QW$=oxdk4s^!Rb9_KS9zL*t}De zB{2WeG9l5!wXr^Gxi8}oR>!e&JU&U2js?(Hpl5E1)!xmB(CV98r?gDav|cm=?4s2} zubG(9E}Oalc2yj5Yh~G+aCT*tGmFt~*K8`Z3-S>ju~~%Yo3_UY4rIc?mNdgve3EM? znVY(H1c!EQqQW!Um6bDVlYrWsfQ;2Vn7-#IG0S{0!-JN=Wf~(`?X*fYn8Wq)RJU zVkSEvMCdoJw;;j9o}{OdFhl4t+uBZSCA9R#&r!6-PkNM)yyLHDqQT`)^$l6U8nzxc znmZt-b>xKdrn#w7hjhu)(Hm;JBs}qw3`o8lt#e;jk}mBC%3ah&OxQKEw%_b(VYeJ! z5Kx=F8pVG&sz1ri;S!b?E7{bMKBvu+JnD;`$m%m;M|N*{R#?yrk3< z{l2UEOlhhLwo(YP3eTO8m<^e&<>I{~;q(WF-?&~hFvjTDDqsdzo>WoM>S6XAZjg*WbQWAsy%$H=?Y6eky$vewvrVkLx|V{8z*%jFF-t9_|G z=m19iCYFyvn@`2v;Wqc@u;Y8`%lF@n`i*UaCC)=e9z*vpgXuR|z8%b|c<10CWS@s_ z>NPssU=-UR-EeMh?B*y_y$%m3r#%CGX__gB=d0#*`gw~p7tV}z8D7vgij4EPdz0cW z-&CA(wi#)&|F|56rvvVmzql`O*|1hUrizy@>;SNmE&U6-*Q2K53RIOk`a`EDO_939 z_Ep*4e`_aHL6}Pl8Pk$=9S8S=)3KP4x0q9p+J}`%*Wu`fHU5#p;)8-s>xB9Y!Q4zk zalCOclvN_c1J;O}K9`el&%s%cq!Bh3*RM#$ckjFAYbBHA_)zF;lLEtgEix&1E*%K!B#-MVTv(Wx__-N%rdt^GD_v~BLevL_&?eTe!4oonSR z6`#dd+Y%6#2v-ZNE?d6P>q>|mS6=BV$S(vS6qYTPUAXaRos;+|u5;(#By?%jDEKO< z?nSwd(7onqLG0X=UHJaz_XKmT(6MPV@4vp%2Xrl|d);bD=-$e^;J>`G8~I{V_agEc zkdvqQ49pXJ>l%w+YC@GSMjQ3b=WCIQPpnItPb3%J)8t&KCS@1M7qRkiL}ig2?@a3T zJ2RihlFqIOWD}rrCW6!#DG;?_oK55xokybFst^LK-Z~cu4*xv2xP$=87@Q8dcWsuC z!XdN^{Lq??n7Hen6Dx-bH~re4p+-;`i1u#wLWlayEbm8makThc%tkN+Z6-+_=^*?M zvWaSHYN&Az{8v$rg|#r2uu^rX^9PwgW6Bmd?snx|{>_1;kt?hrTb0p}UWEp+>7{B{d1Yjwtzl6QFhCzIk$li!tbqK4s( z;Tvw=g6_@ts#3tmcRupTP8G&zPRM#Y_^1yBy%EPEgii^5}hq)`$qpHbRUiA~_*E z8nLTip`I+L%q3_}hqhc7C>^@|S2XkqXROzg@G>yRcdiIuvHl2EsQWZ?ON_rS0ao(mj9aUd!hM-7fM z^3X+^C&XO>vq}U07zXHznBM)iOLvBZU{fxV05m6s69j&KQL2;aL6+aL_x+k@5M4{ek@zyUeq5Ng17QXyhxvO)fWp#5|uFpld;5L+8#aTGlH zZMQG=PXC3#7b~opA(ax5d#g-yXZVwicBk*ynC*{9Bk`FKLMS7 z?S(={gI4f5*aO4Q5#K=L;7F`;8p;rIaU zRKwF1D)M`H)DAc{2MO*o(HCSp03#F#`?h*&gvC6(r)-*}E;#jfpU? z;hOK->Kq0A)gI#nkRTsqs>Md3HpH3vqV(qK=))r!cqnb&U}eNm~PG+pAC;^oGy%2SNR z6BHG6z%>(s9z6xINe1eMV7|_Q3fFR<9+iK$!NKLpE_EiE-#gQsKxECxVe@1BZUJR7 zgb(yS1Lr``bYbbr1s(Di3gYGfJ<&4+nA79ty<@+T?K`+=>p|;Hrp-T_nK^?UlvjRC z6V1_^KG59x3B2ixE_J~7v@a?55f!_mvW`}6+weSWVeUKEJP>4CBzzVL9+#M4fvf;mU1|RgbS);xKO@({?jzt@1j=Y$$qya;L`(QDV&R%d}Dua zhKLA?0In)AX$^5-i;wHJ;fp2RI>OqatK?Rvgj6mq2|QK9E1deP@aZ`&9?uwb-wQuL zC5GxnyG;x*+ZJcvzMlNHX8l_&j^wR=pi*7OffIWVM~VL{FwHoa0I%;c722Emn?=DX zGho)Jub0HLvnvp<_$yZT7Dk=<@OsdjoJIrYRO4T56NjT@@KLi4XoYfS2J0;Q8Rn!3 zh76r7;Bz4#IlwO=ouk{QdfEo%GHHoCS|0CRo`$wQGL@+Fns3K*BVCZxgt?Qj%5I8$iCi3G(i2X{ugc)}uKkky5a3lB+%HAnF)3)0d zthi#^w#|xd+i&coVpsCUwkvj0v2EM7%?dlK|FzcM-@bbF-+k~L+=tJNImgr(T+|{k zL{1)#HW_?i5_R@uE$$Rn+Ty)@7FFU>$3jgPw1G?9DEe2*+8)}LoZAc} zoCqbS;u3%>>GJcU57e!S@0*!2^=^Xo)|PZ#2^4ofReP6I$hQQ4dXq-qW)N*oU?(MQ zkH_6jfW=^|u8c-n&>m>mk*`Wi08CCY>qqw)L-7J0d7^dIkiDClPlc&BN!!&V?U-nv z_0e``dVaYc(XV)y%kXT0Hnk)j-r8;gQ;5{rGYI8ADn@pUTj~!YsS!8R z<+cP!9Qk*6(Kn>}~pT13&`4$)wioHBAYY!lj$a#b^9Entsy7`G$yr&H}8FbiMl$m)&?F3E()Xnql*0o4luYVm;+k#X<<+>x;?3&fpOc>{tXskiTumrS)Q5{}XQhoia4 zfMz}5{UAp>K({C9@$aca`AALy7oWh@b@SMcK;osr+3Dw>@~*iB zKg5@i2mmb@6ggplrbN#*v-Xt2?l)ffjyI_k_coT@i_y>~83-=9sGGfb;;17e*5+%%JI$K$(+&1!N|k{ zz-VJ{&Su4EW5&+tY6)-yI5GaOB8r@{nz*G6;2-6aEDaAARde*u4%2ukiWr+%Makd( zbO|FY^yIcH87Rsklo4ctxvS6d?POpH9!7_9-?x=%9m}<;7hu%I5(f)c6^(?$D(4GV zTi3L0ZEF?}n(<W0LB4q!x1kP>DVLZkQ^qENj zMUegyea`FPG~el`E)dn%TlVnP^tqWZ2Wej+{4AmNT7@NZw5J&C8BYFa+xLe!s3y<| zTOi}t)QGpTjR0dG=9_zW4CBj9;WrxcG9&^xLjiG!!^mcLNg(5^BZvROtsVR1-?-$z zn%_*gaza8Jg@BIOog}V(-0q@>67SDtgqY}Pc9xcQ7VV|^xy-c<`7KqJ<$=4y`nHO& zL-p?V%@eYsdmU%!<15Df2}Ky3ZdNsk@?Wtp{7+tz3w*hsO)mB9m$_N9snA3!Lh=$_ z9P=3b{QxToKavHcsFOI0Sye?Vk>YU+I=ryKr<0A_%Jpp82K5C z5W4xC#V@=MqHT-VbL1TPG7%T^C`v7E1TW*A7Ro&h$fPs4i;(qI0{nQao=fNOL!MTB zzm(qnv%kAx-(*|Z)8vL^G+xDqrq?$wmQx?BWi zc&4nxvp^|Rgv~Vg;?U}9?i$&gDW(V*ibpkndlDt@^u`o=8@($y0D9RLtm$vq{8>z5 zLO_hah#srUyRq{L<KLt zp&Np;$kX#aXp{fvPWZ{&IAm)5FtRekR2cblYVOa7UD08{92zG&EvdBAkq1oa%)C?- zvGk;KJ=&7#-d!L%D>GiKAw>a!1*>ux!v@CodTF5&=^zbGjhq*H<7 zu4}updK?~MrhkKPz+ zN9rS-GO4;}Gv177K)L9EihKHq>66k8DqsF?u{+T6ozN=FowsflZTyMl$b&TVU3Q?( zU4CHdrX2>Xk_IxU4x%nxasakj)MI=;;{7=|9P>uzhraR+ZP@!#Gg&`UO>9TI2$!K> z6Zn^&5NQ43=SiCii%|$yoH=z41|oYzdxky7I3y|h)nj{(vTF2rVF`w8@@rxd{naf( zte;P>y}ANj()r#xI&1t3T1UeZc_i2)w+fS>MWBV=>nf^tN`12aNhSo|8Bc;Z9pJPw zT`CiA?$6#I&oCFZs)bgqox+~MG+uv=6sUxvO?wSz>t3vBREoBZ(KJ_X6(4hJFfh-| z&NBUk;7ZP#xezM~QHgiwK_s!S~#*c9cs6VxHuXUN7Bj`Hcs7cS~;wN5^h`k-H zVV1QbETm9n{w6h~8E^>D^~0C^3dHqD34m|k3iN#PrS-E(SY*$@IwI*bdD?epy-I)9 z-QnY8gCtM%K)}vrV-Z=ge4f-4M~*Ihy9KMtuPgsc@5z5?NFQDkJ?L+hk&jKE3DLR` zuqk#HIhH$S=D)cuXis)eA#C6HTgKKIO1o;)@Ito7mGfh+K83M;)zS2V!uJvDEzWWO zoIv98a+Dc-Fm_25od=dZid)Tc|4xG`Fq2|Z%=~*^9*hwh&rXFY5|JED&lq;U6A$97 z5Bh3z8M?;I15UlpPB4}WH~pG>P7kNRdAB_6zBZ*PI=bl&2CZo}l>Bgcr5DjqblEdV zN~F!%UjoExZiZ?;F}&AgX#KI~t(M~7FbG;%oMn-%ihnU^v%rsy2ffU8?&J`1nsR?# zfxj`C*Hk!kr$}{5roJ(V31%|Dw-O3MKbkPdYX%FA zy`z90nSgAewNCfH$FGA{l(>gEQWXxbRGKRH6Q27_$4|I&aG}gMk(TH_>&J~ zTnXdZrwSp(Dfl{lqyUIant|fef$D=?CG>;!%jVkoaLmf9qlfvj;3LyZo7}i4%d6}^ zc}Y?`Nl`nYq|g?($%Idl8~}G|r%XmB24uL!3wVZVY@V?6CG?XMUJeFmxe99HA!rAh zPr+fhA>3-XGRm`dbtj7IqHnJ;j(*7wP>t=uefkUZqno#wMV3z*@z0*)Vd^R`>X5hO z6qw%m1nMb|TEUZ3zt_ftvQx*vRqZaN<$t;s=b*)q_J`6IhNwp6ww7AC;Lye-BvI-b z&GiBbm*cY7l7#TKkI@_5ah=*L4`_NuNr>4K5Y7dz6GLw4F!{!2jEWcD(1l<2ac7A? zkwoGQ1LNfbft<0heeHU9yK0cQOi~y|`s`^|ZJs%#15TLmWtF!)?>lmAXkujrstwJsMlTRJRa?R^-&r%{J>seA z>sfOSo~4%)4nDv{n{YEO(r6y(Y@6U`3C4}zDG;ShEm326JggwoS;0i*CxhxJ#3Ju| zU5ZK-+I;ic;OL6t2KAkye+PkhCf)i7JAGlD`rY-X{bSVm*q)F5b8_P2*UAfJ-6P{_ zmu!$<-ScN(MW^hnK@YN6&G3pTd$@803Sr#oHAZ70+-}fv`lkGk*VrQh#6E;Di2js@-PYVP*shml*S7R2`aqGoNA~ICVDo1A}qA`G`xq^Yk$-DDqNP~H?53Y_R@eP z`G|xIIk|#MiDi+?Z#{}MMjZKZlNG?p&YK%MnOGv z(l>32wgl5LQ_c+uWqlZuz*|KRZ8SwX3?#N-4t8)V&{nvA6u`4flzYKF@$Fh4dDu}N`d8LGr*~m=L*6?*F7BMrLyM9 zkTaj=o)BE0=S;*kpXQN}sn=@=Lc3(@re|uq%5KaX^3n~8-LctqrGT{?bj!=ctjpNd zERxH3fI(7c8(@=P`89pMlOdl}c}*?A%P}W(gXU3ksszzX&ATrq80(HS=v6GT{0k2b zG;8<&65t~{5FjK-cG5lcRT&^vzI@u#)T%?;Lb)jkwU6K;+T|r7xZ82mdJ00^QoAW2 zEWhDbI;KY6!n~=cx&tzT39^Ek3vH>h;zT@NLW_W%bXo*o{sK*ipxQL-AHBv z45W^8@BJgxc2AJNA0Ww6mXUFuNhYQBe~fwffTd%T;r$ZXh(=kH2)Ei9AdEPB}Rl zCNSjBuQLSFl#7ABZW$9v^+J4dyQZQc<4ZP(JA{GPa3CwzEOkC7py1WgzB+r-CetEG zTu#IdZ$=yIcfbp9B!G`Ko#j4KiAf8xMTRXy8e15LTGD(XvZ3aedP2y;V1p+GHA5zk zrFl*1g(7ix(x%HB-%I=YLwO+J!8XJ+KlMp9yRLrIJS&-GN5wdv#6Hq2;fL#CrcxSH zq-JY`9$2Q;0NP46jq_p#vq-9|*-L_1v{tpOVKW6@6EB$F2t)bSR@!(`UN18zU;8n$ zE}fOtajzu|PDHwQS+=}NaiB>44p=Bt;l6hbP15WX`lqFZL8UQtnt)J+!mJ`iw(K&}$W9P2>UchO zAU2%P^7*?l4nub^jzD+>+Z)zY>2nw`$G99)WY8CwW8I8aY>71(3w+2sXDs+D!&kkd z!IBD)5|Nu6Hn(~4$_ zGs=~HRzR{R8rJd#e?JSIyUX-Z2K^ojuB8py_uJXRnMF~P`M4?<>hWH2)#2iorRl}S z{$715Wv=YWmhhwUbi1Or*+@R&od2)QsAKx4z8x5FfrwQ9a_pqzCedexIih$C#ga6M zIn;n=Bm=u)5WiUEA=%fCvTs}qY$SK2DKvxJ3ZYleBozp87QwqBTNMJ_)nZ_3NeRg} zP;kRqv*_Y9LT7&%xWX{w;+<+3l2f^~ElT_8BvgUw?47pXkIj!o^rSis1r-IZrl^_C-omB9HOR6OGoQ+i?P5R$ZXCsdua7G)z3GYiJVX)fv3 zr`|d!eRUZv`ZX|iwx6p9UfZy0DL+DQ?G(DVRxaRGU0hQj>nAU31p($wI3=g&j}S#J zt{N#2Wz-AZs?r8T(=AYQuE?F>gav$ffW%_OB=Xe2{1ts^u;d*$97i4rHXU@AI;e`A zusS^Uj4;LCTDp131E)~m@+VcCnjYbj26OK3%CAULMw5LZH7h+ZI=0FftMFH$uxe&M zT@R?0PidSuT+DA^B#@ILiWl(pn&0mE=v6gf(fQ{UT%$-1zu_NPC{YL^Zs_?tt7qc? zs&Ig9o~3oGgg9aoSVgo{qFlU)Jy#_67(&bN4OGGvRKkQW_(68Q`yN{Az*BLhHRSXK zws352VVk9UR60A5;PVj%>ZJ26!vGCqSZngk(p|jNAT=icpgOtozUHn=3`iqr*P*0CB;h0zbj zr;(pZxey1cW=}EKB-k0_?7qOT`6t4SRwE4I3%X;}sAX6G_L;%Lpc;3F)#O(0>C;>$ zmbb6X?0mn##L2MnyYhZ*8C-vCjBty6U9+5(pWi`feU>k(ZgW7nbTsh_K>t=$crGo$ zOqk`vP{(wo%f`$$*_61~Hmme#eDs}NvOdh04><9&&R%38ua$W|B{Z5e!pzIWu1~Ez z`2>1d%!6^IIYxdxN~`(DRSA1D^3pb5gYtMW3clzxQ-=LI{Nkhc&gv(tN|%E!JHvWn;P+1}K?J*}U}Th@>0fqS9Uu$_`_ z6c`ZPftdgkO~Qd$Z3m)SxI5MqhCerp12CSWgf z8-M8ZGHvs#x%~)bew-F^St5a;2#S!{=+)zaZ#2@yAA67aUZLS0_JY z$)>5-%XWv_JK&{bc-ohmv7Vi?{x5~=A9>e!(aMZkt(yz~(+%kAVkV!i%nkg{W_Qxqflpr3Gi;8-M;GMwJ2I}G7L=|sn8a$!`UU+_8!H@T4XbvMrA$74P->~kv`x;gZ z=p-)+opNNf`^ER1?vzoOmBFjy*#4xWj$;HLir>T6FT(4WsqjaF@CcH1ysD$E)Y9kx z`zJ(28CjqKe#uT-eCeVy{~L%ZE6%RsW@%@x=3;5%Ove15;8aPE5lje;e=gZ}>7^{M zli&S!Z|rukyCn%RF3P~GOO$Im``Wpk&WHcCGnoJiqOU(8`DKN4hda~AdK&lB=9e7$ z-Ob;}Xtu>a7Ws$?+@^~4%)yqhtQcnWIYR+jv&=eYK2vk|?!@kVa7vMc1eCuR^xvJ@4hVo9eZsB9{a<8nQQcntx|z zDX8T_=;d5jB>&I~(cbR|yfD0ek^NJ-8Rl z!v7Mutj@NsIfI7FkB@bD=;YeK6q?vfU)?L6z1QD~BV=)>Cgs_hbVml;>DrkSGhY{dOag2)7*xa0YU^z(dFSiR+ba$#w8?cYzyQlrYk&aNLD~aZ>n~D^!V~uvYlyiO zJl68Y^*C}?R^G;XleQN0E!R<0PaJS!W4=XcqFg2oz(|wSve9|=erXH4Isa0VO-g}2w`dfQ^QYZiMI0-$ zdk!4hg7WVt7nOhj5ew|LbH)>%r-BcsC zW{2i<2JszZA)%=^;cMBndR>Fgj|<5MTqBA^t@~=yTHMx4JoTM3;`78{m^0`-WdYSU zQ2}T`_=+80@GYEY1Vp&VT@f(En~s1cL!4$HbHG_KdmRI*&-^VN3!GTI3xGOM0+Ox* z*Bw)XbQot@F}ol@ZXa&n$XRjIT^>>#LU4ALA=ezQTsIkzG@%I&0j6U(0kwrCyWP$Z zYZBL8y$DN3b;85LTA?BTa@UZ2Dua-{pbA;ZJ?K`DHTL=fxufWsHNAzWl1`WgJ2^%y z;rx1aoEK%TZ!g4-{mZ<`a)_CJB&~siBRW}r+iGKYjK&~MqSD3WF;hHDuwrmHQbQ?g z&C4^;EVL+<*frkf)u8p6)=xEmsp!8kRr;F+X661r6) z9n+OI^FBC$&-l1KnFzVnhmiKp5FMw*QPbsaOoH_o?EXTUmfGcR_#!j~xtO6<{1P^Z z;$R56O{B6OF-~zU^v+$%DYj6XBFg5x!-7_SSV7coa4IHgeX*`V4n#l&0$VW=zU}eI zH|+VKeY3kY1|SPxucU0$a$kTM%R)`(Og@d z8^Bo=kb(Zlz*2e&Ydr$Zf!!C^YA8}gDHSzFJQ9|$xS^&UHx6<9QPpR+F=R*n2!)f; zWa-aOxQ~kX=gHxNYVU{QhvadN`~4BmF_!?$@4a*{h=~kte*#2lt9HRP9GwOqOnj(e zrKoFIrBjFE(mlY^eVp_RQ5(5wo^MFMR16HNa0s z#&|ML);rxhCS|*cPd^5GRvcu74M+{8Fsn14*1(@Tf9WROWvic^bIsTuj*QSUzVWB*E)_YbyaFtP8Ni)`08(uAos+-UY1 z65L7INoa9^9_A);wN7GMSu13d)jBI+U4h1T?3~F)L$A8@u4&x@dc!GWpwX^lbGEIB z3nSZi-*GSMgv|~2;`iQK?@hVc5N7nXE0)<`BAq>TqDSp7^>N5P?V{B~y{bDC15CZu z#gK^RL2%vjHI=NKci@8?3MsP()?;Mo%00Sq^-XRi$0U+{Pvd$&7rf+5PT zfCzDsDWDz_evjrBr$bRFxN3){%CebZ0^Txw)+V=K@#V)17DXQi9g4J{x;<>4xh6Js z&mWtcD;DNR&fp(tKqH0({M_Yx!r20h1w^(2$Gj71MH+7nV|u+h6BL&vS1^xU*^b{Q zxiLfb=}gq0!#Y%+J$q|%gz z)kczD31cUpri&#-V|AXR1|iu&)^lM;MRyn`_XrLh3AOmT>Cfk$kYaAA3N+7Wj#Uyj z@g|W+un_NnW;kTx5iVgCu7+;WtKOTK^;BG|WY-2dj1e&zJU zjZ9qZo!G^koa~)MEseg)!T$xIzC52DDl-zl{H$G_O-B8?mrSnDccE<(96?ZGMMmX9 zwFuQjH*;1wJlmyVN0l2bNnJ967m#LeB77T;yt0tjqvVE7cGE@U300ATSgC-(3F-}Ph@IdfBh)r%L6^I)S} zCA+Hxt*ZyUBL9nSGYEGU^8&7(#gqEB*d2~;3=e3M?Hp-ZX$V>nnJL`w1wLT9I<9lrA3?^^x-$9 zhL{0?Ye*t@KoTu^k>`G>4yB^qiT+2Fk5Q7doX>~|M~cJOnujfx)73$Lg?qhi25 z;_JF#@Z1>QDeyL1CsJcNag8sH1VkO-cl_Qt|9SjH{3mX7Uq>$s`R`M^|BuK2FQ}EJ zW~(x%iRQ~tAQz^@7H+MivGh<_Dd>XiLY=2bRW4qZN9F5iH`V|?rz^`a|E}dr&FVTx zxb3%^#m`AE8R9!FXEvFc*>uExl)dTu`ZT5iXN-4-yIK3G_93=(o z#sn~4?M1pwZ#Lh-y3~F~Wz|NL8`s8KOm=RzH$p&UaWCP&!=|$^8R^dpBM07B5WZMN z6X)DDJ~Mpo56bvNx6Bn_4VeTuS%x@iQ@~~BD4yf2#ar*V7a#_WgPU6I`#dwzMU3}k&jW=@4i9%|1vB-|NgBKpA;d0)hEPDL)F*G3~{jaT{}8A3wTHM8wI zY*;y(RYEb^X=hf?I0KzE6)P>vQA@>|c?l*RL_=8bmv(qFx7X~M0Rs1!&xEE#z3oV6 ztar|c8e_vZh>FuYBkmHkRJeCrFAT%;&IepTTPKYb6KP5RR=NGQMr6cP@DG#GiF_&9!{i zMDRG?Gd+5}lyhmRjh^Or8`nlmdox zC>$XU2>+B1*m=v<#$Qt*m_2oiKziwMZw272v5<`$cYcxYagug!V9Supx*lxf9Al@s zC2E1LwC%i7y5un=Mw7znB`ngUTxsm^sxwxLJSUwdmy}K>q1um9`1Ucnc$|dHWDHP^ z+}%GQ!nL9Y!~|y`us$+P4{o=LNLvBgqwYP85Y1rIIDm^!h7(v?`B5eXtMqtNID7P& z?j2V$02N!f1kZTy;2N8B513=N{_xi{L zgm17gZfbz>K=Obc;647DUXpL$%_(9yEU2*(QPR_CRCg6rdE;7Q*pDc`CVkwoaTq*< zYVL*fF?+>7U~A;wa=-mLc3ZL)T4x(O%ynF8|J>5BPPLrLZ$R69?~gn$6Xd(HmA*~P zY}K{9w2}Pm?AT#p)xM=cGgd(u$};6E;f4=Li$Bt!_gbo&FF5dApj}ID`?;{{Y%24j zK2i?6u3e%TdnvjvTy@K%`Nfo#Qnfa5)RCoE&2SdbO;0-i618B#{ZQ6`Wqd^XUNtek z5oN0deYmt3K5$+K_=(jlMiQ!;%@-Lq=T+uWR!g89P%x(%$6(Sz&7@d|3sF65TFSg- zT~jJ1eoigry3F|T#UK$FxCdEbU$+)c-XO`om4ZHXgpd%zNZE-;5{hru$Hg$he{z_= zm&vT(Ocyj^?lr}`Q-&Q-$EY=mQQyiM}H_NS_KOei>EmwU3<|H z$J}LofFD0+I}%tMjlN#|tYMcL4W+qoT^c=gtvIxnx=>T(&S)szcf>=m0}F3(syUEbmKjTPBT-+9l)Yf zjef#NaG|`PFGZ?zn&jBcMk?y|s&e^!6xbtktqco@78ezkj{7l*%}8<1Bbuat?Y%

+&a198FP@5~Xd+c$m#kI4|nsDwfSJXpm}Yu-gP~(sEBb zopq!IWDbweVowv-6PKFR&5{IPfpYf!73<}rG#t*O#}5@A_B1Ex0lnpk#EEJLCs{-- zCNGP(O!Xd;0VoaYjtZHkns~6PiIo<)Yn1qa=XXQOC?crD;`>b8(9{@H3bh9!IDfP|W&f5X)2P`C3gi`D#a>FVl7tRO*kg1d#$ z_ZV4O?SeFxn`L3dB04^yLD5BFWqV+39aB^q+3hMzMo@l|GsU4CAK+N;2F#$6#gx@9 zi}03FzWf3z`>qr1wunlcr?^L|E?<}ht*#Aju(bjP2(pCOKPXg3*BjHmP84-93S)nM zJH7OZT9|9)8(}n)lzVjTqhAVLOxz*7VR=r^6VhoBG3{8Wv5QVF;uqu;!ZGDcUq{5M!1q8>7aduO9Qy1rQzwnR zYT<^!g-vY1)z*Q5>q92rRF^L$USs&AK}>`W_X3gwXIRhLrmL$Q8C@lJxb;&t<#R*P zX^iy1rGu#3!SPiQnbjK5^evx*KaZ*V#uxJBH=H%_qNY4KP_R2z&4Vk)1eHR>hNqWM zXc%IR=msNojW?hOrm2B5{_qVVorL*zkV?E$koUskO}uhwKfD93Eb-s76<1?gOPNdG z)6N0kRl%#(r&tFU4?E$gZm(K7$9^g)-6UBonBt;h6^s@B5bugI(w4AzLWSIrGvwv8 zt?Ngw!Y92s`93KAfyGaD?`oJ`k{ng<82QCvT`)dT5QR{o3$-){%sSl$V%)j<(ZPF@ zPFpuiStDRn-npD%hKhoiuo)$2_To*f+kZ`ug=}c(iBs9D=V|KEd0fe z-62_bAk!Pi&po!!ho5=0!hJ9)Ztp7Bug3l@em47WHwQ3?%H(opDdXbw6!=(VOe2ex z&eYCc11?V|_j~cLK|NGF4GifoHL=0nU8d>liX_I!1uPx6&105$Yx-BkbRLjV^~K?2 z)C8vPN7kDCU)F>8@{9OtsdH}K!?Bzr)@d+s)w&>C-Yv1eNWLY^KdDVBwiq#N*C@)0Gq|cT=UgLn zs9GoO^dAyuob725Kv>@GB10P6qE+F=TUGZ6+=@Bz(XDzjCv^q@vdc_msX zJeObUzXejum|KdMpGOK5t&5AlzS}*MYGd#B_-ftng^~%TnVX91mL7H`_mGiMO9tBd*~tYoG2ubDQL;z*$Z0cdR~H zBKAny&)?>FHs^-$isD+$sZUv-pk+vccHMOD)#)?@Yhs$zP?9?7?P%rI_5z!J@xS5L zKl^6jEGE@AZdj7zjcL&L{Wz#{>&u28l4I~8Gb;*|^_QZ9i)S#*Arkj|UCENmKR{}A zLB6KavHWVo-9lz!X1nEbQt;Ubl94_%Nax15>(OrJU{}Z-5<`gLju%g=Cvln+8BJe#3)Jgb8%F#GWY z+OvMjqfKpV>GKz({AH;Aq6*~q&KUu0e)x|droDxV=_}rlFqA(t`}XdW3wWiC(9+$~ zBrKt|R~e%+P(PQ3Pq_b5+uUE6dVXf9-rQZ#f$^={#-wrGRtE1f{h+0=m$;S(zq*|b za1iV9g4xu#whlOs1Y}}UC&M)QbCDorkKmd|wRbnV%#0V^lk?XZ7TgZlY@Mk3`YO=q zjTdQc`wN)2HjFU=>utrD3KXE6o-E&O=}oLOC&=Jb^P~Z^{VYs~{iDHihD*8;Puf~>vrUhlxnJa(HX1tijqLe^C)#QF&2p*U^+=QBnHl~BhnP?L9=z9+>*vEgY;vm;&e?t!M#@aGm>-9&c=ZZ~ts1``hS71c=!Uo5} zJ#0##1;L5t{d-5GQ(s7{57}EwBz@%D*f|sgDFZAgzcPy1pqEOY#B&EQhPh$~19(Pu z7B6L)D3Q~;7}4`lrGg{SLzwCfMtck8Yy62AB6p$;luP-miNW@S!%u*xr7NQ5D$ zO*75$XS@m~-I`{>;&7tu9M$q%i&*|DKu5q?QmH9gAsSx~V7rQca8|as?z6r{=HmGq zr(}V@1}96WTWA-YC6g0I%d01iXs;mqT6(L}^Rjr6d{V(@&6T2neiv@#ulESauUy$q zi#Q8S18o+Vpk@t@4;;>Enj7hR+z6nUIMKiq@E|CYJSJhU<1+3pt$*VlQqJ!I>+xPPUX;09Jwrdl{3AmGx)-? zTP*~wFT~`qaMv8?4I-8&6S@lrF(8ant_oQWqHf*5)%DrsZ&t=}PFdMN;0vY2offjSmqU-zI( z#n>GUZf5^G18e%E&a%rbMJJOZY=*+)X1{F$f7|G?u%Au>n*!A@{QAqhgGbu$7l`3f z%r&x$p3s^=`~?z#(~OYJ zM8Fg0Lw!875WIPxARGT@OFr?03|sX+rv2ywERPA3IB&b6PYhVL>1Pd-kujyPN4)L; zon;~W)wD}T%o^U&<^&0MY=cO08tY)qiVR6?w*E^#Ar&?)SaVp7KU|Ta?*89mmH_76 z!RWb!{j8IG7;JI?!0hSNB(tTfjYnGj%h*1e*kc?dK-p<*zXDA%gK#(#ZJ3)omg7gP z7^t$vxBYgo0$j}YoX3l3xW8e({@H*br3uwAnnOCkLmsCGiu@(?I{bYJPbpH@;hbmS ztWy}ub@P#F#JUtf)&=z)cn75XK>VjG_Q!&`K>n&mr=fiNM*9Eaie&+=|K0VfZte0P z#KCqHBkQsZTx9;S;8>zeY2c8??iPYl!k_`f0kV=fe}EbL6xgYzyIIhTm8;2Cv_2N) z%GQPI+LrW5SY#kdf@|rEi;a(fhE`p@v8t*CLOs0;?e`hNhAjbS*0i9RWx}WPx~UcO zuF0mSmg@JXU>OG^?#%~7u;>FKD1*cu83F`@$8B17MPP{OMS06J4uR_)vJnCLVKc75 zQ+GErehl#V`{)UB^8Dyw*>(2{j@3h(M(_N<)OytPXV|l#9}3 z%uttV1n_)*p)-H<(gIUk6%~^N;P_%$5oG)euvNUuuB>viK}*E7q_MEERQ;Du;~B1L zX;DpXRd&L7>kCkuSxgvWMOb7avtD8xfi{nrv3ZKm5R$~qPk{)nsqdY?K4ne7P$x@0 zWns(Ga{81V>tc6V{XkLnm;F?|0Pe+W>tl5p)(__LjYv@rt&J~jbb-#IL>jX;?%zA< zLA1Ya9LTzZrMcM{6j7r@ZOPf2HX1#9YnlN%dOh=dD`$Q0JJ0lqRGmCUFYy=@`4p>w zuq=nJ1*YXCqm>CWiT-#pQQis32+NRQHw@Oj4kMnl1G3SCbd-*va46KXx(J!sqS(Nh zP7qd%x|03YUCUdwS{=HP#3lFcNI31N4IDdJRH>2rG`F8{x99EU(dvk%kb^?!hwj(*1?zK$?3f%oE4fS|o`mr;5C z4z@j|utDC3Z@GpW%ogE|+@;Vq=ga0l2i3|Nj!pM@b=J3wHmwIeQ57B0Q;^;~`O=4p zHX?3zt9woVx~xd2vLFtEoyLY!m#Y*>eNu9qG};z6h`6~sn8mDSlnk~zelI!{ENCoJ zHx$4ut19bx%XR^p$<3xx4Pqy*$7zF|@si39cnHr3wat~m%502dX*3D5VOb1xKsFLv z81mx4t;h7)wHt3sEL(36u>?(@4=TX5hcm;&3b4dMYERp27juoXD8$&8l{8$GT<|W- zxOqFiGBtVMl-PIInvl%T?nvde@(?* zA3?5?CmL-31bh9n6=i_)jP83ehzsfa>#Mf_-`9Q{2?2MR9Qh5z#ID_PJEnQ9TPHr3 z;+$zZ6yL7hc3Z)Hs9Rpka)1(UJv<7s%(NsqR~#tEGC!(F*=L5`IIPInr*5-PFR#0U zA*{Vo;YM?;rC~*l2OmVo(JlEbnfK{Ye5j$Fhkt2eA0goe52xuGg`M!44UQI=$n^zP z^$rTlo5wYuzc-j>%r9>ZtQTK+5U!3L7NDBPHA6z4479T8d&_p2$yZVB@}J-1c^FC0 zKIOHSYphJIDBx6xII4A>Gp4@@EINOp5O_75Ps=mksz}29c|-a8bj>vn6TX61h<95^x7V!dGH6!gn=gl z_D7zx1OHGV+`0O08s3u=8@4W#Sstoa^R5hDpY14hnoqo)rIjl${@8XV`*|vK?5KY7 zr-vyVd6IegfI#82s8&kLw+S5p7DZ2O=Ly*UJm$j2qDECQj*G8M!!dFscC~Flbmjk8} zUO`!Jzx8ngg+I(*Z-^Fems(K}QCVY{(qi(UhLHPAMrccVq+OiV0`W~lg$mh$`sg;A zJ3-YbeP*~nZ#{UYq^cs`O@?QIWb4S|N=i{ijiQptN?&7&i6W~(#n4Qd1t|(92=YeQ z*-|ZS#sKtDbuvp@M>mLg!=)GD&%)yE2h8N0p@vEc_KSI_&s6_a-A#dOI@`?LL1IrI zV9Ae+_DP$ndt`0n@^9}j2gbCg%PUK_63dNOT?ke{t@TrlbNWZbA=K2;XeW zw0dFkMW;Q+2O)H0FcZw2Px`-IDw?ItR#a|di||=;CLz`Rc~u|uH5|%l224MLa7aIp8=yO`pf2~n1q(YH)PYIqTHG|{~daK%?jHwDBa9Frz18 zy&p&-KTTUktSai9jGw78xLL10%hj7vM!b9 zx|5)k0^|?M;Fu!R$3o>{8CNbWm7&(us*v8v%J= zR`n7f$VI={e*J;o70$qHon}!gE(^L!MQS|Vz%#l^dSxoh0G%7HS+Fr^7%MG$9gSm= zE;A=ZKh2l8yT&-qK*a;ae5J~|+-A`B1g6pmWZMTF-;2z;1H6e=Nz@7zLIVK4kI-t2 zK>TYtqKnKEF`(Z>+Mq0zL|e*2u9jP{7_@qC^hHGL(c;1yLw9p1U#=NlA&ZwQUadoY zcPgF1NtrvDpm-$1b1rY}GV`bPJkZHiQ%uGGMPIq|__Nyu>d;Yl(#;+s!}uHLwNObn z&4-IB(nz_-n)Pz>Qf*QNsjPjk$Xlg*Ca=cx+BM_(eA!F|M2(EKPy_~XLyb-wtXKW3 zLxyYSJ#?c(F{%~(c|@5&eOp3O-pve(0l_ojKM~a>4iqKGSN}o6*T?ej5S6&SldX}9 zn7awU;Xjyq|CQ=UQsh_YV?y#lAP!KZLhI@89W;kWkrmTJ%A!loyR>7fqNS|DYudGE zCT6|{dsYgS5o98Qv^lxlXlr|->+0xgH-;`gHcecm=1{R=CetWl%boh;OjP7V+>%sy z*tacL>J>r?d|ut41vWAjwq{|P99-=$qs$>Qq_~oGl%6rNAfT!+y9D2*kEM-MhU*kF z7Oe~DI_=ae!UCWsF@|%Wopq-%U=2=5)<PgdBP)k%^<~ejbE|*9@Rc`8;<1>< z(T-a5tgE{L`R9h#C2(;>er;si*Y`h4T>N*o=wIVn|Jq322m2)fNHa)1NO@OCS64^` zamdEN{@vYqV{u3Te9l{*%X@!d|9+(Ed*+)<0^NHin~G1)+x_qP{kJ?c>j^4x$g1tP z*}Q$#rtwTwaY*E5yjX*H?Shmf&E(i9KA!~@^ZO_q;*jEy z6p%=UrbggA2@w6ph7j?xa5n#223h1Q14cUv-|X{M4AK6A-c0|~CHeW)&dVrdYUJ=W zfA-)1_pd*T`f5-3s*n2G>3?5gP=pqhhNTy?8irMRHKq^6IF}(4B#*;*A(5$-N-kP) zsmta0fcNv?dYeT=GwY2UKaPCgj{NZ@(USoPaItJg8IsZOdD2vKAVhT6 zIveD zwrxA9*m`55V%xUuq>_ql+qRvYtlhiM?z7JB{xE;QyylqW8RLF#XzEZY-#N}x>n%&F zNvX|h)KkM2fqF)w0ZpGJHB}bEGG*4&&*Hp#9CsCh&uG?kyFF<1ogP;Eua zR6&6pjOWo#C9_z(DBdm?+3YutQ)b?oj{B?X%v1mB%Ix*kVZa2Eu=SN$Eh(}^ZR9j2 ztf6x6ZU~#LKr4-6nEioIrCW*$R9mDgma0wt%r70xI`93 zH?T3yGl5dk6zMUFvtd{}?84d=ozcS4q`$z}7)N0@Tuxk#nGjTol662+`DeUBak6wN zzrJI+2|0xumqD*~42}ESWloQC@w&b&XPRnDl?E&iRlLq4|4Y`=FJ~<0sS=cXJc_S* zkyWXL(@_y%GD~^X40|yAlMK3uJtr(2U5z2MC5)=2OwjNcTU6O<2LJ(zA`;`$mye3F zcpVr<$53v7e5j)RCnXGVgp!h8*=pMyLIq_~9=cmuVbB2uwZxNQ80g;Y&uJUB374B3 zy15em#|JYSx)+x157;M6?3*CXL28S5n>`;4F*Q}6jk&VOsPg)b)!EDUyqcnqUbnu^#F?+H19j@5Zx1tqaxEPjM+9ts@0`Q+l8cn9jrkXT)RT^Rqh}AuV-DWzoj)t-B5? z7KZ^hzzx7n{cei3gB~&9mdNC2OjtQK8-pqwL)ht%#|_IKWw*hKAfuzHO^6r1b(#L? z$vzIZ#F8V{I?Bemeh;3>m>qXg+dyK72pl~#;Th>b4^{9*@p@;zvwMCO&fJ~&J5 z!gEzfQlW}@Sh~n9^dkN9Z>mp18{yzv6{;QP<>pL3%~WKXdheq>3SoR4bpI0Do(aT=jIp(Q#;?s<2)M# zpdT#?fTCS$Dm`UB=U;Kl*sc zv?-dZaUrzYt|N;%DYa~iTBtO#ocDl<*6f&PJSklGJbV(=`p{TdkmSXB zdQ7jt5ROu>sdZALK#gHe>K^5jeENBj^GglX@VTz^a8`Lk5k*TQ0mry?bRlI;$SUcC z?(wRFX=z{1_X<6(ik>(FrC}b6ioJ%=msqVXMghw&y(p)&BzYuAjL81MvWzHsR&;s{ z^=2R9fE%o9wG2pPHt@}pRf!^0SPqr4uz?{BMdMQ2o*F!`KInWYHy1b)lhrUhsPbsW z4z9_ZJqQN@9rGYI0-xxG2NSnn9t0W_w|5t+tz%BwBsq+ucXleKKQBls#2mf5BnUjv z<%bj|SnS-@H)o0?yql^cM?<8-RB8N zxnC6vDPxWkolTZM!eP647Viug9`ii3SvltEjD8E^hD1h6ToAZ9<)>FiJAWep5w>B6 z3b|9~VKTaxMtmKY7lvBi7%j$_pgL3J(2l=FES$#rq)mB`#4lNci@e6=d*kP$gOmK5msALyl{_r%xHB zUY6->B&HH^ahPFne5o7mEnoDRApD6=gjeib=I2dkZS}sSc_+m94jKAEA<8RrJ`DEa zCEZ?$=W?f)FB9W+nfd7Rv!C>=h?$U9 zcX>B{ zL0-pZe)|IT5)smH%D@UWqT797arg-gV>5yA!l^m|b08<;nuf7cX21oLe#Px_fY+oy zD%BA^9Rl^{PtU?$J8upt+L5ov;M`Z(8b99Dr4W$U+_#}lwzg|{KOh(I7j>Y!8k91u zXn3j`$qKoncZ%Ao4TN&c)NGWvb&Im#SM4?}@aLwwOgJueeZToVg3^UErx(xTUdVQK zeRrGsfM=cEKF+~b)lQ4%3k3@R}D{gyen#+8q zT9|WE%_l6mFTVOfn{cH(TA^>cXInqeN0Qbnj^5{{(o@r=*=se9)>^wW5I1wLwpL6% zk?M+(rDdhwsvPVhY25>HUvg;AVhIH20f^2jrPit1GgG$rHl@!#rOz&<4_OZ$tlIMY z&qQ3!=qFz%#G0Su-+x{IjIlbk%{fog(f3@biHO`GUK;>o5E8u>mag{Z)ZqA&tsdOv z+VN>J=Hr_Bd0IXo@c4SvvY+_!FKf_W6Yj6&86T)G8ernr(LnVdCtM{*fU&;ye`(kL zd;d{7mHmt4Q?y=pUZ)JIDI(C1Rfw_xy#-6xFjXJ{JVK*@WUqy$uH9zTUcO`a1oUxN z{UMM)0Dh(734Wh$JxgdFVN&m4(#dh?dFaV>`+j)%MUaINft84`Jo3xkMx?cD@h=CY z#4Hu`73~2e`&nQikJDnrffiNPlJl%N2`&;9l|Z83dJ0N@`$ID>@1x& zE1t`Xkkl3MfB03Ix0}4WfaIl4t9&oq;;jeyk$9fQf@h^hZM$5-F6=&PGw-M>GnsTs zTJn_ctn;(r%pEJJ)lijiole|~)#1${E1c?_*c zzg@Jn3F!&8Sc}Gv;A*vmn#x3q%};rd-FZ6*0qA&w1Eirt1BkQ#91rXEa^4a;wFut)GpWkFFUMj1wtp1X(9b z1r9sOr)-}n--LT|jb~{v4$D=g+)U~n?o!D`TlC~es4HrhJ>Nic(0Wb5UTu(P>}ZJ1 zS@wuLNAKrRwKS(mx23~J_K&2%fMM+VCVgth%0k8O`m6-Nb7p--A%b*>~UQc!jUp239!FDMR5NZf_ zgaaJ=J1K+)Q&21F4@7;zQzYZHR3O3j3Hcj#e;A5@HnIB)l3}v8Pb0;t)431_$%I!R z8|;WC2UQ{B3$UWl`{3axWOtB}vJbR#aeg3Wo0EDAQH!QyykTZfMx7II78WE7X%zqr zrxWVH3n4pS?}?g&)zcq|m7{JW^!V8>>QBL`JrGQ5BM>SA8l{;5%@)JVma+BqbCf+t z4sR3nzinQ$@r&LRj>V-qTjT8EeMk;V63G(XlBrd!$98OOf9td|SVJ-ZfWyS_Z@wqM>EzTMBF~UF+oKf}ZnlgQvUd~?SB^Q6duiTXf&(*!hwG-&s`?G^Tj<#@P z`)q+ZCcu~tnJv-RgkqzZ8!!a<6Ef(~THofe!K;c>5*<;--F#ZEA_3wIZ8QjTY*;YO zim%_w=Qm?rBOQt;%9{TmnUG^%>xyM9DW@LF zV=`jTlwB}3vJvyfV*g$=JTO)C!Pp&w;Xq7@-UTw*)wVD=tG@bMP^Ua#BZmw2+c!|` zZ{KMCV?X?VKHfh%Vx}7OPc2iY4{wdSz0=d=ot97>GRgGde0JxV0&@xMVs8=!i{)-A-WU6BCKyJ|XnYRGz#_*P>+VRq6+^Tj9H4h`5sy&m2? zLGyK@{L#Zy_p^Py#sQ{zs`BgV-UPeiS^jYG_T=;JdfWvEtLmQx`${Clcw+eIj`m@$ z5tv)?^|{$417qFJ4tz$-{ZJ_}4R~RTy}1Os$NT=K-1({0@Ja{#8JUgog!fjB#|O8C z2Id{A_k8W6^5)Izdk6&ey%1;wNggFYUbpK8Z z;9s$3Mpi$C3D{kOoqA5BHA{ylrnO09)7C2GXOm@(9aJe@`Xnb-phn#X21E&e2M>Zt zMlU=(QtOuBanUnQ)uVStdpy8JN6;m4jO`Cy$sZdCIsSBPF#RO_vy~e=bR}+NHGQ0x z`_ZYm;X#eXS5-5@Kx~>l;uJ+%WE$t(m015+$TX`OMG6`vQ>+xK&6z*NkTN0dtjVNm zHF66q(WdTx2Lets~{oN6PxrbS~rs2pe0wBI#q zwSs;97@J74zgAdMzct^4a2-QpeC*%|u$p$TI#LDF?=%Z%-H-E%DBvm5!hsXl+e5F$uIo2PUzPdU&veJiWU! zFh;$uK3()4S6^(3EVvJ<&=Z0qWxAITOHF?lQ5SxkS1V?s)Y{je)8O=&M-Q7^^@>>9 z;uQvuK#3)Fn zOV3cn?=S)IsGJDS!d4?Qap1O7!f;8jm*;rzps-AXNW{RAj9Fh)nnL1X=(eeSh03qvm*Wi z3Tp(4X0h(RmUo3Ebs~fIY6cf1nWFUBj9?om&6td)FBoW+Eb~JFE&nV-hZ-*shi>G~ zVA?HijMQOfA`!&LP-_oVb8ip>~s&xZb4|KhKrLE#4R(FE0+2CM@PK9k4BQ~@{jY5 zeDB5$Wvn?-rN&Yj(urOF(jJTY(v^8sjnkj7)a&5pp2SW)lB7EXl(`~7QKtbY@tZvh zH$aB9Ht9eqP_fD*6L%z)RtpnQeHnUAX%^*B6cHy$s4Iw?f?s-Aa&s*Wu7t*Od2XEa z%qAs{%vFMqY{_hx{TYH|kN#g8oQLCi`*n%RedTkyU2V(CJY~tS?xnJWj!q0vy{Pp?lgjVxqW}+v@lj=93%u7* z=tG!aVrW;;`9Fsh_2KsvGu!u~{IpA*)s_mQ(k!}86kBX4yqvMAS#gmrdtcvAe22MS zazf#DD@tt?ev$G9fyT7 zk`px3>eZ3CTgbA;>blRcjx#Fe68b!Ly!V^B+Y7@BlC6=$`c>KVfjGYDHb-|;2b-N% zi;fRyUawP9?G(ZCsYSfyM&1aCth(&%On6~^V-7Vm;Wr-)6)xR|%OZ`vEw#3qdyvdZ z>F`WaXifMb6(tksb; zMQ5|T<4EXXowSA1BwR7c!?Klrs)oo?rlgpPTvLwtMqXRJ?GL1zUM0YvMZPHy*RGzl za#>B?vfgaG@@&3|IBsX!G;z{>wz%f=99OnKBx*N}QeH}fRj9psG+I^)!75(fsyZg_Kb3aLR zqw))UkbJ>m_o5T8^7m}%wwq&{C7;&!$RwX=Z)y>};htR~H)S?xw{3}iIs!JKg)T5< z94`FccJcGveh9tU?CHu%?CA;EeA89rmvP0-x*m5ZN%{5Yzmc^)J4HuCZx64bC^KQQ zM_-<6X$M3G=^ExpvKeTn*}J*l19z(>I~RDk1zj#x0%Ln%D8L_c<0ruDp%6%J!Jtf7 zQbk_!qq^WB3ZJe^=&b{)Yd?%54C>?iD9Acr^dI(p6_M3jdRjD=A9zA)qf?+5>ny-EbyP#gew6$3)ND(y*#99u%(McR%l4pAepI>3^{} zl>8R1A6A>l^-i`eq+6Pb6SMP-KKyP4Rejf3F=DukjTzj*^;;`TxG`fbZtzB>JBT~Y z=92SuZBbM8Mcn(FWs=8cpb1C(APbs|W&~7D+>NN(L>Fk5VQ>rWtOt*W{g!4*Q zGMD>tz1Q6eJP-54HyK7^4EIZrcV{-;!LG$!nU>&|N5vkjYh1wP;hRg++b>tD>bGY5 zH!rRmSF(d^a867*Q_M4wdR{F7=Gnr9+jA^*Gdu+tgAdlyVCH+S0(4L|Z(Q!6&HhUU zQC;q^O|t#mi)8Y58SU$lyW_s-!sGc^+myk^z?Rx?RpGi>AD5y$xa1OvK?Y^aQxK)U z-Mu$Ng@~6gX^0`*pDG=1`25?r7dZ4z(Y7pE)`CkmgC(-(38fFkr!hZ#?c(3s*Jz$u zS)*YUOR@4%*2k`zGIbkAo7Y}-8H{G10GHT3?Vd1AcCfl;Nw2KYE=;!;YA>3bSz@o1 zrr91r;abYdfQnsDh2qoF@9Z`z_ETjhj+l0_G`spusbV#;u`5w>brd{7z)#Gh5B38e zkd-dY`C8K~hBn=*+o+-saG|>6ya2pi1%WZ%j_`!!A+}xbgP`hy8XiW5cG`>`o6?nm zhjBMY=Vtc}@N7;z8|&=e1<=gQkq;mi*D%G-p{l!v1&Xr_nv=PZ#}hlq`)?F*a&sqE zrTF8J^NH@+R8CIpEs;^3yel8bo+^j523$H#h9N30y{%^R9L;D=Kgkr*?wj)`Eku!@ zIDwwPem~1}zN2ETG`H?@Rg`tjw4LXSe}71WGvi4cdS~DjZ!I5M@6EU}%kV!aZ|rFBgIfcx>Yw`e(Pgvb;=JTj5U@W}VU zAXmPqa}-no#QA=>UAvH1xZMX1r?9Nyl=$^<-_y{C z46{ie4(<7oV!3}<>?Co6u^@~aiX-*9VbAnQ-J+X!RZNmEWZ&fLVyNeq)vBgKlw(?{ zH6AHCq08T+E5f#@fZDfPP@8uniFlA|d#Kt8whpBW-o$nF=!{MrWleV2z(qB=?z%-B z;~F%mT~X>df7uVUB)R}xJjx%PHFA!jF(qXLD+6*h<%?BwB`Uiu8k-901Hv@}*15#U zi|f(n?&2<}zdMg}GzYu1srh#X(^3CGkEYfB#;dCf^e(~n9hYi@^0W~c-{m9rdaKgm zDKfZLCr24_P8Vp>@=0#H+G+0jRv54RljVQzlK(=b&MrPZmA}?!oi9}CKW|}*#tybl z07K({!KDi0r5q3i;0Hf}0|Jd<-Smlhf0_C6FNp1go2gK$luEW%sM5E>83Bcl(l)lM z?~mK=s?eFaT^)79885fTfa8-SVY{28W$AskdpsOg+ioI=LQWbF4Luz+MNnT1wS==^ zaO`<0U5&Tdh9OEKvZCj$1{u53q4%`DAqW{Q@}j~>jMoHgST6?L1}#e8P@6etri-mH zyxso6_=;^GjajrR&b|3j%@$~}5;>k^k!4k?Gf6)WyuG4RO#9<_D+vP?tB33UyhUXa zp<`Tr*qr7gs+_bL^Q2r;YVP+9@)V%cXS`BVrWZ0qhZ@Zq|q( z%ly`Go1R*4>pX4Esc{Pq3K9cV$ihFXHMa~7jydS}C)F}ymL#@8aC_7+J=aN6xxiZ% zg0!s}43>9^KL|1?<%L8`_11S>$tC5QKruvID)m1|pmJWfFvg&(_kIBzw=<*vT?gy7e2=}`x(T)Yys1qrG&^a6ZBa^;$DcdvRrMr z-Dh^Cl;Tc27Lm@cgR@$$;Kgr^PM+}(2kq2FGCJ)((ZFsG#UBtel{GOcnF8s4W}74R zP%oQpjp0kE9)thbyN4RIxTSS@8 zi_@?g9%o4mhE75;(3A67SED)+ zTrBds&2}n7`9_|`vov#1km%Z8$H%xPUvZkcynSB%=xw&6{L!nT1qQJaAO?nDzH3@ zSF7wT<;oi~Mon}q&n=T^7dA}#c;~oasElVVN>*Z3`SvVEt=25dDi=Mokvwb3ae6;CgM*(6 zvVHEyqqEevo=pK?R}#ySY&kaH`CNQR*9d>+p?`b97rCW~qbSmta`0DmIUYa48PE3h z%EJ!;;X!c+hC7-Ol2$}^5fL{S@ryKE0ZtI7XbAhZ2dxKxqJ((o0v0ChCVimw!+b%- z5mRy@7^t^s30e-Z>Fxg14r9tKt*u*V z-_3J1L^AYmrqZK6H>McLF+=f&v_X5#yT!eH`WFa=y_uKUe zFm}=@%|>@oh@NsNUUm^xts#HRMwldL*G05*$$C{3Ta&ORG#%rp3+wlNu*vnHM)Uy6 zqyH+0{Hv)tKqq-5f62Mnzc}Ro)~fEGxTK7&jro`1%74>Z{!zY-YL+fYizw@cQbbai zZ-h(a0e$?6M#G})?1cdVKi|G#`5~RLw=_6`n^Qv?!Qu?F6CZO)Y!)0-Rr8ALG1FKR zfadZ`&Ni+jHs0jEf9bIv9A1Ba@n3gqV~k7M6+NDLCwN>g9VU1VH?BQC+nj+TkNUX? zi0RRU$)NO8*irtF0o4dz<&*a)hKzSG7mGCEkH^nsKz0Wg8*Lxsi%kw4#WTJnMDWs- zXU86!7Cvi3WDnMV=O(ihS^nr?)`QT`FR|%E1AdCTbC~hu2&mpFpYfDQtFJo-#qiP* zos_!GW8Q?=PJc>b-u$t{)Zt|dUAkhoBcZs(owH`aUeO8=dx86fpQ^ND*vIf17#~ZP~#Rav@ zA4YmH=V8zr*+&}Iu5D=dko2>ilE#A4jBE9`clEw#(U&cRc4tEdAT}IT2y$*?GtZeXV zC^L>W-#TwVsi49v6ncr51&f&E1Pn|J3gIiiYG*d0USPCQV6jzOC1aTxJl{qEq>7wh zi;kcaO2dqpB*@sCU|f_OibSV|yr2%&LJsc*Nf{LC0D)r{tGf7ng{;K0$+Q3 z8AV}oM1*-}?1)BD_gsb+H+Ny5-J(d*d2lco%H0|v+gd~kZ+qpvcBSRs^dkqk%GBV8 z?KSFM>?5#_@0pc^Mv#IlVKS{T#>TyJmzlKO z6a?u(?<&w=)PC~jvuO7fe%qM4!qT3x(@3Ktw{*o;!mJ7loTV>#w)=(xYrCBmbn43G zyJ^wl$J^=XG$Y=7IaRE$nimU77qUQ7c)d#&p*%bRDiND*YZ2zQL#^Q!W${?^!mKM! zl*DT)y_dDq`kJ5r5Q%|Wt3l48sK;PQ%f8H(#JjxM^#su*)}GAw>tyI?dplI(2kFzk zozc?r;L}|+&BZMo?4^e%-)pSju-{%DlPo)p6rT`^3LWRc=HQ`i>bjHJ;^rHO>!E^U z2FBe*vy)Spf_CTYLNyGuFgj|rKqAs>6Exr_o{}G{uv!ODTFC)wz;0!yyrguR$%j#t zY!i)2Az8a2LyJn<4dniOn*%G(yoFFJN51@6DkxiT}FnhUymSd;(}ZY#;4$tXbv=5 ztqraht4Z$iD4E`dUqxKX|9+OQA)t#OROMz`N~HPj@-m?>1ZqiXCOfbxEQL{dwlZSI z7k!UX;k56;|{!#;Lq#UlzsDeF4^7;+@J1{4=i+7r;IjB zj_kKw>X&Tsdz@_uTA}}~j6&K4oj(M;YvY~rTmESm#j2!n7aQ*Mo|5Y=3&(phDnAQn zRh!EbWlhC$087Q>iJR%kxy55M-AD zVY1yUw4|1?DZ&2I4TQ)74!kx*bHGaqx9zhlT?>>1BgkRJ^DK-(#Q0t+GD%@2*^h=)= zD+aMyLufZEf@qq(x@A0E+QE|aN*Wa5(WB0YrNCd-kveE=&?J57H7^@4Y=YVlRAI?O z`iSAjjH6XBt3pdb`BZ->G4&VWn_6kDCVrjQz5k>wLAf&leuj2_cfBvH2z(FK5cAN& zIhSoBI}bVdyRVNFqOejd#201t>y#(`ceCl26Rm)q-G5p6{P$hH+E>ppM)59QK0A{w zN+z~mDNNcRFOXUFZBSMuPtdknAr2&MYAA7POSLLWJquVKjwDnB4abL~B-f-XX@FAk zFhrvG;yi_gg+Ks>J)Zj9M@L6rrlzi2#jh)7k#XGWOt?)xPq@%-@_u%aWeH-aZrfs_ z>Z=ch1UaEcIyi<0d9|nvfd{UU?gr ziJV9=KG%g+o3(%t)xFoyd#emB8eN_W;vxXV`}JWr|F8veV-6a!=j~|Syf@kThz%*A z3?eI^HDxNd$2V~gs?@ZN+bi7<_{N^GoVM1Q*#2IxZ}J{u43=r`9GB2Jtl*da_!)Oq)K``^VxZjALo5!t2JDsG9Rwj(1VNGK)=@^q|HgyroE5oj; zb<+|a2M~!W?!T+d9obS-3oM_Lrr@<;km0o6kyTl#rmQ!7&zg!nG8|IayNMT1(#t_!b4&Z&hU{C* zuz?}QuITJMat!aRLKWusFJbH=@wJ_F#dW@m1zUF6!&L)jp7Yimo^gP{Qr*I;QH3afD2_gz3^$ z^HLLOkmI>g{gcWaIlG6h3WIc4asG+6#Xv_-B)SXNR2_M{q#bI5xWp*b?&b3H z)4o(r9Z=;7orv8fyNj+e8Bd(htIvs6IH&fBQ83szSut!^SU6pQg}X8}5tDpk!lh4{ zQJcGPoF5^4rBC%yT{+Qyy2NpgZzx`zGkM*h^|sf@w}2w2ht#HHiRrWvrdBh`6kH?w z5l1eVQmgvZE|D4O8RK*~TjxV5vxIOQnaJVh{G3&BDB3c!rupEFI}ldl((RzK)0G|7}cIgSQf<(=1}P*)8;ZW zh$K1MYWVux!K}H^!-CdG<;cX7thK!7SE#q@nK*p1<^%Flr#2mceZX_=lh9NXZv+{f z-Sat-2n&xljr5W&#c{NC@=DP_5q_a%FqJ>sp);NdI9NvekA^?ru1x|RpQU>8(@@Np z0oJ@nmul^`g8c(+AuBM}k*+%$m>rj*K|MB>amcz-Azy^#nLx9kRa&hu@2J~5$47>k z3fr7-(*B$TSlg%aW>Qm~y*5^Q1IMeIZ;ukIM;f_j>NkDU+dzLfX~!PCsNb7roaVl< zeAcGj(#A8goQeaQN)v1%Ez;yf0uh^^Q^91#b}Tom-pr^;nLKj(<|8d!aLsSwBlKi! zzUM-Ud@NP4Xy*)CWDnA(8X<(y+hB+-*V|Zt*~QPK-0(A>?(%k zAdDelK9fLoeK$lJUu7C~3v5Pq#O0c7&>63mGzJR6curbs`A_Nf`u8S44B2$6O9^fG zjdPqCc<2f|K_p8;{6PH_W}Xw7Lapq+vTaCq&t0Zr%5)A%L!!o*v{`vwO5zmab$rQK z9%b%)iH5R6E_e8H=n#hVA$weZMsJR|3al7Nng^J>V7vh8?GQYU7-2Z{4?}k$5kamf z7rVM0V)Cj{vRvcZE%eGxSeI?wF}TT%Um)geBlJSl<5lk4GuH8n6E3c=nLe!X0n z_@CoTW8MJZ*TqQmzE^tT3xuXruZ(rcz12`JvgyZN-8DaOyKmsFHxL&O?;O5RRf9E< zmDtm!Zj-o#7pN<$QNhze&MQRv0&5L`lbamhb~K zb>rlsqX?k)Ff+TyN#b2EUMGr$6*tvXgD-858)zY30e}V+{+vEj>k)aW|a0 zp@HS@ZOmRft>2jJdV)xcaugK@5~pzcMt&a#7xIZq?W4Qm*%Y_QzXo_rJhip(Ym{+b zi7fp2*`Mfxbiya1&*Ziw(s_C8pqkqFyUeSvt3Oo!neOe;3gLpP2=MCj>w^dG{ckKq z=@iwChc8N1z!y`I`ri#T|D0$<&299p%-#R5N1@WH%`87WPkI2Sgbd;g^IG@5V%(j< z_j4r#MC;>tsaVB(6zh!0`tJ3{1zG4f6o{}sV7xzK1Ou}2QV57%OV?w|sZ7oH(b=1w zMA0Y}2?~Aph}3K3+oU!q_U#c|Em}dpK%pP0*Gx+~kHf#?1rJxLGEN8S&(D(Dx%Iv0 z+6m!QM6TJ@T;NLBQ%9U0|C~K)?vZ|HLpRBiP|RlHw$Y((@cJXaG~*>;?5Y^5w%eOU z|Js3usQB10*$ZrAWFglr$e6&;%XiZeLYVu~b0*#|^ej-&uQJiBhAnN2aZ}mge>3XR z8G=}K&k&}u0fudl((cinXqybip?KS%X(XoB5& zb1;;>pz}Uu?eO=RsKsMrEafq&=v8mzCbLfujB0{rZeB~0OAsRg`w(lZXY4wXJ|9-{ zA0VD7!fz`!oboe(g2^6Ix6}%rI)}ST=T3j8CA2+GDPmreD3mxSD3Gi;E2M5r{nHY} znT&wkAS(W%`A}XNreLu3!o742#+(PpXZLN8WX|kZuI@1kkHC+@x#|!agQba-bBVD8 zw=7w|7}CsgjkU&qaWeV~`Wns9kRST09k(y|>)%3O!vC-U`>rSoCXu$Uo6g^3GLjgm2vI>2%KSgUkWfOzWqi}5oX&F8NY z_C6nl(I1h1UYNKOb8^41k;X5`Umo`In&6mpTm8~-@qGxxKtBoen?7lGdx7eexcV9= zMyV-l_a{qmV-J8oQHF|9jz^OKR77wsp|Z%;)fgxR^hTdcv00V1`@;Nf<6Mgj1ZibJ zCsB~mQK_Q#U(L7YXH{p*m|a&8?mb@3i<=U3cUj8!K@MINbz4~4H*PBUU14?)I`8w1 z*^{)`ZWKLJ^;=xGz+iEgP=flx&R4pHg49iHk_ocVR3_+6R%q!ObkFUpjm|k7;}}Ky z0nRj&Nv{+7+-6I>z5Wsj5g~C1ii{y~3@LF9ddFuHA~U<4W^Rd7!qFBCS60okOUeN{ z%{ZOwB2l8^$>0MMO%mky!>3TTU`=+R6XGg+9$*)y6aJG9_vuagVeXk8s~r@c>EgK5 zqdy&82{!Y_?ave6IJ)Jxi7$L&m zUOO+lJ_p5Ae;HUUe1vzMHjEshY^VAT07>{V@Gubah|_kVp$* z>XrSpEHeOIO>6ZwW)+i>1S{I`f#5Rs@Bx@de)k_8Sgs|NtI8nePQw=Lo5sM}TDOt# z;Sb;HCJPo>9tI@$YyM4pV~kV3snF+W2{bjy5`oPSXtOb_~Dk$mboRjFl|s{!mRI zVCdILuO-|hjx9O#GntoyPKY-?Abgv_#6H}a%`QC)#y$fY$LP*UKSiu*cTcHjpg?Uf zg}k_`fx&I2F#&?7Ua-mDcc>mG;V-yJJo zJWpoHzv(&?l~!eu6p(d-bxVKow?Y8Gr_IeV_KWyMpiv1+W03vB6tG9kF{qiGI7Pf3 z$?m4n^gLtx;>`Ad-@bo}uA6e=Yhu<)Jf2r9TV8rSJU{H-5@?4Q5cuB4SRx3js|$Uv zBkYL;qlf7aF8}_74{bjljgTv53CVuY+X9CKvyoC{xd8J^>PIC*%V7k~gnag#W2f@k z`rbiVTWY>Iy?Md>TAGDLkBh&Jr4|)E3@I#Ad5Ig#@A1TpSe#V_K&m~7!~$U`vK-dI z0<%!2s`|Fa+MYxlM>-(0+XvbB=N>CcOJkcgCfyy1lnkF1%RF-?%xEHZU`NrCxWbqY zk6}uCSs}(tgIQnoZF16)U_xj9MX99heEmq6v4wk*g+Au{rJ~HjFbs^)XSa|8CH5jZ zo6J2*;^z@_6aTg_oi$3xvH@wYjGq=mm`U2Cr9qpF&ks9wPm)|*SYGX9JK%W4B6=Ev zpmanN`r}?2$YumnGoDQT9_oXVbKd|iaq$!}wBA1$7g4$Gm?scZDzIB?jbyQsG{xxd zWfx(v1sG5DYXIJpc%jb#kLTOGw0s(?Sh+DLH;3TjO7mL1tmh{S?qPV&+y0pmqf8QH zGUguSNofD6(&ST>TeqrN7(&3leaVaQD@{JOzF88LeSq0o&4)YWkq{1#-nD~Ys4@Ps z_y)PT=n4|=w^wmdSbt*R0zZZphA7gy0!D~&GXj}(e`s0%;sE3&T{SB_mTg3Bl9tUp z{cOdgOtz~QL!2*c1Dt}2UQ8D#Q=Oj;)jDbcfE%12v}0}7JlY=eBlw&u@scDHowD2G z6510EZc7g!F zEF?Dycbx=gCBDnbLHGG@F`SZS8;Y=Bze)Jl3Hoo9-Aa!70LQ;L(f=^&|8H1HNyqjp zJ%Xoqk+OnDuyEnaV5m~6v;yzy=gOQiEQQHDxOC*Tx$iM!%UPU$Zs_L-nk4fz_)~s_ z3u+u`BKUf+!&kh~;~JNXiO>7T2a-LvAWbC90_>WMA#l2RUrnMY!Yby4`D14g4lEqZ z8K&z{3}-?oOf>qA>Tv?WHRTaRkg?dy&U(ov;t8;=Ti;$r&iHSos)C0@Bf_&0g5D}5 z^2Gz-jSHw%=rxPUhY1U3raekWpyr8H{TvJMgw4YlQ*!m}Ok6yN)!j}hbIF$rfw@eo zi$-FRwvI=e>%b6nfprSZ5R>CT62ZC?)xL!DC?sEp;$1l zpF~!F7!`W5s%Ws5*p8tnNv&X`ulxFxxS15@+qgdK@Pp3wYd4$S^Kclgs4EHx#UcU+ zYxbaM6ugk08#*#n(yVQfB`2Nt=nFviD$6r;UF>U}e>-!dLv#_D&4b4I&`dlHK_3=> zkaOv?xzoZ1&3E;X3AX8^tzw7ORJrOg@2hFL&sZ=!jz$y#^JUaRQV}Bc+So-|A03u= zp{I2I=pnhWs*A7!TmqeGA?uP#i|mos1sqU+XNx6j58_rm=*M|sFfa<|gMVcfc>{th z<`w~j&4Gw=SjyT}a(CZLtpgo@n>0@lTI)erxCYWS2xCa>?{@MSIhf4lF$x&|c1bjbnO2WY~DQU^y%m% z2q#?#r>6R$ic`T+f&ewhId@G#(5`j~4=^n%hA>tOJ~6nPQh88y2EI_%*&WUys+2vE zU_yIz5;kiacoFnTfj%UrA&3hqxQj=JuZ*Y&!g$wj?2^OH zy7unX$Pj96^z`|>>#Mw+p5L4JlVsuT1Nta69_D}@b>@KdfFo%DnB2fGu|+rIk61-& zz%Y*&krsspR<`UAv6dhQONBI=S%J$=@$)d6Ls}YLvC_QU|4?oIGWisH{p?NsI{Q|? z9;W~840NzFr&9))o0=K}zCMMB^H)TSh_k+x)Bg;||BHV^_t;KM-q_vUT;5oR<6_-h z2cjq#%l~5Ku;VZNmz9HK3g!RrzjDG zx2%C~Tc?krss#WNiwKwq7zr4HzK$N~cQ=p$Lk*AwDH!X&D4_p(Q+%k)sYAGL--?O8 zeIxsKZ~9egrvH4+fAp|Q^{@0`HK&hBi$aY`(KxjmsU*BQL#`Xirnn`yWqU-iI>Y6- zGj(radpmV0BJ=b4sya;#XIEs!m6;-%!azi}Ddd?xYl%P6M+h14!HVgET2SV|G`TS` z{16n@xq(0=cYH1;V&(HAta_)DoeqZ+JeLk14hz{nw@TTf2&$v2JuOIj%~y1&od}{d zofrq#Qu=F=$x^j=n=|_;I=b`wtNNbc)yEg@Z5>skkJKFqq9h+GdYyQG{TNP*{B~>5pGYhoo`D$K3Y$qBOV+PpiiZN*@12!eEM(LwkM5x0ic9!AWxJc1#vkf z{Rwm=N$SQW$@1!wB+@E{(tNA>6v#!pUXys8Wr(sn)|8HDifx1gX`R zEX=y7CBB+oI%dOp^sGZW^b5m?QYV6S%+#ZMQ2TWmP$N(}swaR#+WR*7Daz23Dgx@r zI!(RB5>=Uz+p-w#%FU|j-Nuu%#ktPpd#g;^#iU^;z;6<^fZE_eKz>EDkr2gviv)_6 z)v&0PP17E#z_C1O(!^O59Q)lUtANVo?_r$Z`GTQ204lClxsCvkOFlS4SNLUJ9L#MobYrWfZ%cDeH?XkIWryNOvv;6v|87z~ zxw_h-J>1xK)dU^U>9|xl@TmvO$jw#HW}5HB0f*yQ$EYip<{HKgW?QXa>`DD-KsvQ| zqC1qb5Ef}B^-%H;I%b7|9Y}XR+>nIpW4u<58+CR~lFBG?YwjH)29g;y zF|UIIay+z`eT$8UPyM^FPvc^e22@lw!cFwBUAvG%BtaOWxHJ{l)F zh?GD2Xiyzp7YECW-#mOMw$mdMjGSjHQsaT?bMT5~19N&O=)N*!ZP=L5{fWzPm6b~y z1uhSu>5HqO?xJhrYXz~hl~Vw_eruI2jFj&eY>2|BFNJ=ulWx@ctz;8aMiPC_Kcggl@u(jf`c~tpEr$3 zK5mN&ZdTxMF&8nGDpPvMA{{tZ7mr?+L=RRXJv$-+0rV)uGSDy8*WZ3ltID! zMqFe>)6CXwUEdZ;z@ohV~8{*1NH+ro-zEZ9*_hE(!dG9aCbL^0SANK;j8)^9e~t z{_$e24{eB@dZT>D4f!G_Z>v{MB-3?#itRJz5}9{0*Xq(YWlV1;ZdlIWA~%iSG#4@T z)gKra@}J{{;?7D(^IVEqnA3*Js)?*d@!2dS_-~Jqq*q-urQU<7aeE09pq66htTX%V z6Y?x}w!UjzC~3{m8|m zdG1wjFz8FjYV2}x) z1xX4Wo+g)azH%1E-%)HKKSUT#(AMl)vy2mt1!ZwWy`L z-zbz$y&zAX8)J2%O}~>aEnsRTi{fLiwdN zBbgH_?WX~m_jae#R7%b4fGp?P4Gpa6l6;Jk7csUT<8mWOdIoFK9Vz>Cpjlz^kCnpZe_Js zatb+4V-I0SRZo=(K;UquYrT=e@SM#SKSg$;C~<`?4U^}#(|(ZHj$fP_Bsd#XwRKUE zo?4CcYRdv--HjDcuLI!H2}A0!QF#mAdC&VP=)iluxltY)`iU|{-pk1*nnVhUeTzjq z`RbTQcj>>;?%q!N3#FGsp9s`JcH5p?_=%d;Y$EbHU1}k%v-fB#Lub(WLC^k!nvf-L zJz~>)-lRUb^>J&l>4Saq1BEZ{s+o;FGRDLPDSg=_oI6Twy0+-7gdAtEOinNdu?R!xo;JxFF@hGuWDLHdPe34~>b?W|dL!FOdp&ccM)ab-i4XNoenX(>K1lr(yQWlf( zba-Kep@wcTb%!C<-+v@qLPmwmD5>cys(MalxrP>RT8qNV0$hrj(a9DToKc}=>7-A5 zH|NmlhvO--3sWW$Orguu1pA5#?4fMaDOY3%CwxT(WB2226)82gW4J=&c^VHj@;;S& zP5Y$|qde18pW%T|7!`es#|hR`o|}EpE+Ks0$rY~gR?p1rSJ)0aOb*+vjGvCmlaH!& z*0hJ6)|xEA^i0#v>%o^T@SBc=9jC%aEsyAn5lwsnDzn4uN6H?YM<&>As zHlj8Q8M|?}0JSmBnN5Ky!?;75QDp@{DUaC0Rw`^M_vDUQQHuSauJbMC42tIRL#6y8y zG=K9THr5d<-ikmvOPb+YY%FJ4m>z%RTwrb+27a})t06P4#|u*&JJGk3T`CFvfF!FbNk95k;RC5 zMRUqli9WTq@J0(#XQ@h`7(q!ruXy;Zc);b~WCI8xOySmRBHvYJp$XONOJ{e;2{5eiaM5}BtW>SP-IKvJS085>yM)&#WD=jX>Mu*DT> z_6Vo;1cKa`n;X?vr6R3T=JwUti#3T?SdzGCr;lvn3=udJ@uv^UrQdcQu7~PIhoS5* zBK;&?R`4e?wnx)9MW)-QSkfYuw8OoHyhO|BDGXOee^@Ilo@XH8{_e37w^^%pSgnhc zYM?IJX&K5KzRQfdXpF9jYP;=GgQkV&g2Cq+l+8A%=K&M8$KZt@6I97{Mm4pE8SQstwFj^GiyYgnQPqXQ{@34f5TaQ0gSS&a=cxs zTilkEJ4&yUX!r#6F*8d%RCscurW5<$qAt6lv9z~Re2VnH#6MIXr#oCY$4$rN?V^g>Q?Vmx~F|B5lc>&K!nw`;!!Tr{Y&dz*pt>$yVTsD9_Z!s+uw2jBho31Sek8WHK0Rko_S+?A_oDlfT!ok$j`9_dpHP$x za8_3iRvX!)px~7dE>|k2q~cwP7eQ202cFwISH~WF|?r&ZX+J-C&1#N4cIGI zNBAKZj9BM)Y2i!C2U-{RRq3SU?1G4KXPpkxMm)5o(3)?U);~GS0MEU)N}gpv>(>rc zBrqN&uV8^ia%VjHACYOf@;(<2k;Op!i*}SO2<&RkDMMS(KDJmxGnp9q0EwH+w~#xL zB!(U-(tPi=kq>{qYaM=kK-dyYOn|IPs(+(+em#c5@SptIi(YoPJ5iA{dvwC-f66p2 zF<`rhUd9z@amdgM>su3WGgABrAYI=>u5s>u?foBOmeQ)F8=qe_g6Xdc)n7Is{i%xl z&x13cgM+TViLRc7;omC;fzj2{U&5e4-i`UbaS8GPaF7(k-?W$L4Sk9c1c*VHS=fL@ ztPt3waU*>}x3Xo=>&W?qwz@m_UN0_U-=6P3e7P@dwzt=M!*z*f7%P7Kke`8K>28}t zM~xTV2ri{}A97WR=s^vt4VNrad{k!81l{IDHSfkGME0gkK{nMjP!n`&%6;s0tpbiG zqwkB z9Y|V|euaOy&~5pTne2`!n1%R~(46>sdi_f^l)u%NOzfeW0cgGm6fW*n~* zO2GWwL7YRh;~Pxh8(gl|VrF5QP@WnweufRw&_i4Ili5PVl2xN*dWL|eK>Opqoyj9p zcWSwI4A60K3Qe!M<)yp?%`CS7Nv6*pN>{?1KAh)F0ToNadQKFzJ)6bh5T#dr5WZ;`QZNrE9mvYlYM+DiandCPS$rnqYi*nei54d{q} z1+g=&rPyE*B~!7^DA9a~8?UEh#{P#|ORk#cD(8{27HR%2MQ%cYGL!hRpY;^QNl+x+9rL- z@-5(s#A{38IK!006jjt2{c<`bZxvx!pibhLS(W`3D?3wb6{-9X9NHz5le-JA0$-|8 zY!U-q^ZOd2h%xnnBx>zkf4KeF7%rNWaU}c)Ho!ZVNFM6X@GRd+ll1(_7cAe+Gf0F- z|32IJqFX$O>1#i-3+&)LZ@#0UU*Ro1tJL9V=nlGQhPLDOMx#U#F=ym#BCLEX9-$)G zf}@tf%`hM%$;==suE7+8zmGmOLG7CTv+464IwH22g>SIKW8Rm_XzjzVmqq>HND=tI z{=_qmmU+B+dcle{kBL-;-E1bGe_O-rG0c>Ad}mee|DVE(M3A z#?eHv%mwZkM-`NcO% z_(WCs7E`>mih-$T>*Imr7d7sv5Xutq4J*p$iAqJd^$ijAUP!;Y7+1_nBVJ^T=dKGG zPQoK2JFzVX58It%sd)~7WvkxHukM$>+RnpbBaVH|XQLWNH|0L=2dqJP zw7((8_4pqVb*m!dCTC9;c~JM+Jv)eYhY94Jm`BQ zdnU@bz>`R7;reg%PoOK%@i*i0lwcTP7j zrCfQXrja5*z)%n?X~<9-U7y^3RL^Ne1gUOAG7TmHHX)c3uQgB#L^1*`VA6HEXckn0b`XdqPw?#gsiF z03~}(O_XTJ+VE~(KQN$Y1QR=^lE;sh%HU)b}=&iQq)HP?vLI0wo2cYxO6N&cJHC3O(S(h{j z!!>FFZKF4%5F7ClJwHN=J#X+GKXD7ip zl4*&eI|MXxs5HWBWY0?KLYM_-(XO_K==Q?(m_Z^F^Rf~v+p?iCeX++PwSC!dENX+= z=H)VTF7MQz(uzTUQ>dHYsxEbw^xjA-g1is7TQP)D0{vaz;1h04f zF)B%V4i3SHgv{c&XkCC&tiq8JnfeG@UFC-?UXZ@ust3R8KX5GRyZj82Tirp}>-mb@ zwvd)u0AZE0Ba*r5X;4K&0tc!8Oz^uvmQlT0+iZuiZdebL~1Uzg?ww2uRN*6yI<9&oXNL6@nN@%x&>N1C|G-d2a zASOEMPQR8g$=v8Y3!0n9(jZ2TOjq{z3h9>`hz6Uu=Llp zOA)`SKo4odf6;}C*q}w}K}B6JPVBBd137btFu0^}WMto~sb}ue{Jw4K>Rb=6SYi?R9FH9QHRu|t=f&)R9XUhrd+$hTCx%I!!B z6EJ6OK7Cd@;BK2*CtxWCRXR6h3fHiV33C&x2Owp!CnK4@^!lb+80UtSbSCqQJCx+0 zR9AsUb{0lZSJIQE4!$9VqW&oGS5lL%)V9LLp-CC|o=LEKONb|I`WO3=E7ZL+EfV^$ z*DHy>>r(oLafDS8;WQ*ehap`JVO+T}t6TS=5w)lyWMhjEPh{A%&%jrB+ei(}fdDq+{1PwgP23Q;|lhB`ws1`gy8I zRm}d|Q(|^EGO;a|viZ##dT$Zk51ewKxk#Rxl+UsI&MM_kaq{;Ff@cneS5We&L;*eu zzDHSZg1jFY;q3ef5M=~Z5V#b?&+>G`zQAJ4V>>vY&j*2G%#ykhsUBe{#?q^6SarEp zDA0Be++mI$3_jirVV|^Np9rJwf{)xQ-~}Rd9Wx_vG&J}yiEyxSaNchu!KnvujgWe% z?(n-O2yX@CKqv%OF}aKQ%A;ECUV~c6afiJqJvX|T@1mmIVa$($n|JM-a-&| zP{V>BDS5Hd`qyvyQxc`oH?|1c_}E;yHk5a?B-&1cow=BcR;RL8s>IeKwdb{iSQPtO zv!O0C2()n{w@lzKT~VT|I^99c)lN>SbIm|bMV=#d`YjXXxcnQYdD~x|kuj-vA5KQ6 z0JF_a4pDuXfya}7Rc8C|wxb?X_CQ?jwx0BCbYXyY2E4sNsPp-p2Ow^9G)B;@OLL2R zmJN7uivegInzHHtR?l`E6Z3lW{`WWTQ#_^ZhOe7k%ol;>FGWuO+(G`l{2JQH8`@ag z|LJ^o{X1arl$WypVh^WV3d|(LdHn`3&9dRMgX!n8;Y%x-fgpku4CCEts4qN?Skp3h zPM_%<@Wt(l;twZ|8*pBIqJoSjiy$|DQ z1z8fQu85eX*A3t7Yn~}dIWNpS>QScdXVAg}=CSvP%)f8xSPEOI z_c@fXYQ=+G($2ftw(~PRf`F?6xUZehhU5eFxq@*(cduI5V&4T>Gd$}h+2vX?vq`lD zbwa;nx&MAf$L;egJPHG=hkLi^BG!NKPTQBX^FOYjkg!C$wO^Nc(612qORCAALtLUU}b#X2kZavm4I=+ShstV8`2C5=>~YoHcpMKOn~ zd86Sb>opBM!V>bB9hZc3IMUM5!=betg?J*m#WusUJW~+;hw+L1g^BKe37eXVMXMR9 z;`_T6c2dfJ=$KYm6KCYcytxdEsz!YW1YNP!TxdH1U|hDY#n)~H{e=Ga4WRevp_chI z15;n$UkXrk=;R%BfLyh+XC%=&WKt~6H zOL!qQ%qK~#qNAs!r=|1xMhHnbbxw(g0!Z=OK<_8ufABkc$P;_Vzm{0!YnS7H4bw+d$xeVVvg6DR)Hv_4>gBnI+WkwG-Hb7%as>rGS0F#W7%_BS{Z~DP ztqcN+N4}x?Q#M6x!;!G2+QTldAa*oa*r3p0T1i~1(9gNx@ieG#J;1V+Sl=3cnUYzS z>s?w!c8kb7W>6-li-MWDnst^>esmgZt(NV{g9x*8Z<%`%91>rHF{gu@8!w%3L0}2h ziY%bSss~u;o*c_Zf^31yyw$|-lj|AcLyzA04m2?#wf)|wSN@X*(T6r|x}V=3X~XDq z*(M;1XfraqSkP%Cw}h1O%oBF0DqK7eHyK)0vck&tnFr;S%XVP~#W#GAam+qF?onN7 zdYhy@c=+(PWvxG{KsM*&rZ0+OWLbN zEWyi`uYfyL{Erch`d=H-d{-an`fuDNeH9a@KlRA{ulWA2+$AA9J8Qdt8%{*j_#Z9d zK$#Z?eGPB*?sTx0lHiGf^)e)3B#>6Jrl@1$305Nfbd=2TK-evT5HT#%ZnY*+m^Jr~ zQMOE-OWdO!gkN+pdg1z#Xdn_L_Ef}bLA$0E<&sU?JApCcqo?%G%lU^gP@Xl)9IO3| zG|wrd$SU;7iw&~$>nR4-ev(=y@!T#aMg8Z8QJ)<*EORqR_(}RTOvUV2Sj{9X1HaXu zs7a}`yc)Z?Z67qKwN;D&p%2{*f!C3d*#r(wH|*<+hP0mzpbE?78X}-}r9zhN#d3^T z&HIhAb$W%Mps*iXzUANuz1~g5l3xo3gLIYmEKWXB6bguf(B-mT^I8N}zHaz;u z5C3%z<*lt91ilO~jQJNt_6a z+H!>?^9n29JApPIKq&7Ha!3^a7`rk;wDQtIg|Wjy8Ux4c>*QnRkUs7!u>~5f&0-hU z#rQTivqY7n1^U!gR~NIB!`aD_{uE5ERU8(bg(4R|;Ns=;`R~?hung@c9Ne2GISzd? zMxkE}lx}i~oj7eAhc|OPQRMorIp>4M9pQ>;#E@cW_vj7A=&$WVo)m&JcZfJ(uFF5k z2E+q(&q+LEpj~F5JZCOk2(R4gofz8Y4#k2}3pZKl5$MIK(Zdnxep`Of%ae@Ga>G!+ zWy|=WwvoD~#$ccDBXsp~;-skh7U!Dv^dJbd6N5M%!8WH41v{S!E)nU!Iyu7)I;}*G z6yE>_5euCUc(K^X2#{}-63Uk`VMm6r4m?F@05G8Xj;RK%M^m9*GyxN9>d;G%`9Dl@>cp z3;%Ggli)LC2MfhSD=QW9YzlZiKZT1@zK*_UmwAL-$L*s}c>tTzxQzNd{2}KSJuph2 zol1&Z+H?#aFPFSj*QlQgK?x!Lg+^8R8nkW!`OccmlXtk-n@@LVGRMjXr2N<3Hu}Pq z$B4e+SvCDb6MF*N2>as4@v>-b<|Y*3f5PnVfb$LovOowbL|#aG3)L8Tbv+G6OuHOKMBqxQmh7K+Z(1+sh$YaBM#dE@13CEHNbkc&Km6 zo@$Xy7ZixTCzKw^{Ry+-z>(N{iWrT|dMhhEFWVMgUp&Cy=saSaX7Qs$waL#Nh509X zlXdq1hJZ6(p>&^d&#)q;urvuaf#a8LeQe(__UV^+Bwd*)Gtai^5w4JU$1KBC87x#2 z3i}mW!zTk+5a#GB`A1o6H~-desC->7qVxPn?nyzidH0~2Quxu5Xwd{H-U8H(Kc6Hnp&T{bN$8t!4!GPbNN)014v6i}iP;+1us zs`C@rIS^yoj_i-`j+L*#@qs*;$f2M}nbE%vO}6`aa8?g-Rs%)YtJ@myQU5(^h%6L- z|G}t8Uy<{d9Q!}uMgDJ!4Tg3Kjy5*db`F0J9m}Y02tQu9pilBy`CyoKKI}VL_hUF0 zD0Xx{{>O0?g+49i^KJIKZ(NFbg6Q*_ARo`4)<#y3qsUrgTdHWPRp7mpP5 zM{}oO8fnex*U)+Yue0s{Z^^U#;(vd=vi4CpR*wv3~u&O28O(&wj7M->Xf-~M^r{HEuCinM+3CbFf7bXzk7iCgzO zqD)y_wX)KDnpqf0+ZvRtaxiKZO#BsfQF))GCGmX`PUOL2EE_MQGx}*l0!^LXfw*2!h3 zTBA=Tu-Jx3}W9T6w6+w^FoO)a<(t`GP8#uH!~+*CK@*}EOgY6elOz9 z+|{yI?cwWd|GykUe`4fib;ZZ)tE2XHkA=V2Tt|qKiqBfKqEV+3a*>gTi1nbwTOGCVUUt z?()@Ty+WmH(;5!7kkB>`8Z)3ecfWk}dhJm5et*5Sh6@5;iVy(EqbB36hBU}JGYzB4 zN3$5r21IH&>%)hU(aRdhlFZr-${}Bn0;nx+vx=ja7y4l}8(xxF;7o5MG)zfNb$Bly zf>BzRlNy?j`O5H&ZK^U-6r(&+rWTYFZzRkDCV1eOjKG?p!q}opg<4cijjXtKJbEf5 zw*DI`u$?0n-duwYJRGcTBCEhR13Yi_@E3E6;z34g5`w5`4W~-6tW*JruRZr+h1hd7 z0>(OrBF`*;DsQ4e%3RfNIA7nn0`D{|VxdK_-%tOYW=hI2|%9imfE;<+|@$YF?Q`H`FN3OUCTAvo$xT0`TDO~vzry4WF- z@NpR?Ctez|FRS6wU7 z+NNLZE zz3MPAeATm%-e zEi$CJ5CfUGEHV@o8qqLM=W5=^(b;`r3&g)~N}MC|m*huK*3Tm5`y~#=E$R3Dl2|vA zieyWZ)9c6uur?QSY=2af;NKG+7lH4%>pKykZqkPIgwJm#~o1(^MY7>Oa3Zw z#%2}f=@1fApFFX)^_PwuH)8GqrW|{*_-K)FkKs=p`m;-dEe}5{P4}w^elQ+~Zy>X~ zlfHR_FnDnv-+Mse#0p{YUbsT}ZJ-vv2k*FnFCy_r@YCekT0=$dUIat?x_hqmLI)(1fRJG@YDu$*!*VLw8a~K?TH(ViA8Yy)PR2_0JKYX^={;Ii4>G!6I@4z zvh1U}1b1c%HQ-7~(&vE!;nd_TiH@D8|M>#@l)v{ zaoGrK)#L@;feGW%B|Nv{n#lrq)n$#&ilow=QlMhr(UzptPf{Dz*sk+jvIB-8!W7JV z*5^Tv7sHBG{|LHi87+b&JjyedF3ghZ=0nWqk*%q}eY|n|T|wuv(UxE-0kVzJ1K=5* zMRJv22G4$t&E0Ku90}4iskh_2tKvH6+V?%JS9+EI`x!vn?p`!o@YW^vP?!r3@{Lix z?Bpv93=yA}C%mjmL=}{U98v%cpkGyAYbsYY(l5=W7d*bC6y~(<3faMfTR26vdmd{hD)e_`Up8vQ~kOuI=PMw6`{RDgrFkmY3gK zP?{=a-E*)5=pp7t4TH!xOf1B*n@U)8tTMoON``3>I%J_5N1aIA-)c}a@8s{wKY@*G z44Uu-(#8Dc$*m{72WfXg5Vz^7EQ939a!{p+dyKZ^`oe`Yr9?2XWBr-YD-z8I-vU%P zFIwXdqhmVE@s<%Uj(ajziGodrzh>XOF>n*^M5DrEbRqbSn; z{s(F0@y*-M^IRlMmgp1n(Ov+i?SS#;HX)Md0f1WPAHvG6>#Bxmj@x7~dQI2ticpDU zQSEr5_Q};G>-m#mxWgoSXL?I#f)QJwncF|;%ADh7aOiF8xP&N48l{QaM+!Dgqvr|G zpZaXiDY=W=k${?=h~ibv8C%Mk3JhEr%c>6>TTEte+Y*VC_J(Wbzmo@Xij0#w`g#+s zOP3`@_TFaYp5*+vAI_-5+8|Ch15dmX{=Q1=5u!%FcNJTin;DIW6rZs@qE`M8cp(YS zv_`Q_eL)we^9XZ%gT`}?gM*0JJC09%6ezuvE)8njsBWl=ZS#G(g8ns|8bYS7C?EfV zcXPmD?VDzH^oj7~=$&$Q^fYUY4a5Vc6g|?nmh}4_tcsahB+#E&)-$3F-SngR&>|bJCxqxPV1Cm@EC=kY zhmqmHWF_^w2km%z*ueLXd<(@?B$2wt=N2bRh%wsp5;<7pPKe0R-kZ^mqs#oMVxr{T z{fxNmAK0(3_kx~re`F(%4TBP+IHGuyWFFR3BhdT+wWx{Z82RO#RPgx?J%t86tRHwJ zxt*?;om(%P>qyLwQtHMj#oz>GA?nS`N26tUT@1U^gq6zE&YgQ=CTceD_sOKg{UNNh zoJ*iyXJ~@b=X>1FSzUXN2@h*cMgu5`DYSOJ&H~9>VTREi#+iaXEth++i13>+s>-&p zIdX#3-0r`!4ga7ug>=3=fiJ+z_f?(xuO$O%M+*xTJJT3@_Aevkg?e-*OshRO}j zc{18I*M-ZiwJo&ur%Mi~n%?qLVqlyy$Q$OoYt>9{x&nM7)4!+XLzFzqd)=rgQFwoP z`FIk4DdKFld8gKAqC$rz!+7&S&QG!Jp#chW~`_2YXFO1 zHs+(iDG9b&o7?U}M%;$Y$2{tuABrFuu_WfZLMl-WS_E2!b?6IThmA2AdNHF1DqJvi z(RQoblzIu!EbLC4_H5XzhTKb%^_UVn8g)06rut;=zzRX_KIUKp&!^E_rs(#QV%4-E z>`CF%%3nAACNgy0nWURP3*rsK@nz_J{=#t-Aq4|d8OW&Gk5HL!`aMC;fVgaI>((L4 z^=b=Nl%c8)jq@2*vtJ#=Z5i;OYZj?YCKla96a7@J7Fsch)+$yj<6U`0ACsft?myHZ ziYtNHjlOd3=@+f&zt#tp|8|%9*L8@GUzJDX`?`ON0qFJ;z#}Unz#~I#!|`$YnXsC| zUHkZj8a4-fPf)L!GxE=0On}{qXjIStDQ4<=p8Eu6_IQTjU#}D$Huf;);JxlWd3NwR zIjI9LOjD4{is|3=^Gg{cY{vr%9?Hz5FA$AUbMH8xjQZ9f_?IqD#nlZMtV(VZijXp| z1q7p1C3>oG!Cs28k@SJqDmp?DHZx=a2LYV4<2bnBz!@?56ssl5o}{U#9Q$L0kc3@T zI!hT_FP-ZJjqsXMEt!qoijy+^Kv1+!Jo>0My5=YnizLrrn|@0SL;t{j5aDeQMIw+H zGgj>u1eUm~keaYAvAw%(1bbFS}nT10UIAEdkosWc}+% z-V%5vGaA4Q6h7jY?hGI7+;6Cmd&=u$7wUPR5Tl6g`el_5+CzKcf zpa6~fwNAssqhhfdEuA&yo@Z23C`%j3F@~;I>@Zt+u(<%&-jk|>UW~_Ry-kteL?14S zab3}toM{VmA*bwCc!l~9EWj(JIFupsoU;>a+ZhQe?-kQ6-hfT|(^9=ZhF9k{C$juu z&mybq7Ud-M6%d~3gM98$x~?ZTc#X>QttF>PioE~u4;E!+of%Nv}@rW zLn+g}=Hydw2`IjL+Omu#+(37xnfX`2V$tzy4+zaRXO+Rm87~M$wvbMy`EI4_$l@US zb+NJ!<#>tBg#3hqq7*EG-)C@TSKq;>spj5^2j;X<;b%h^&YoWw8)8_6iAWlr`!Me| zYE{xgIHqtMtqD^~JF$xpvUgr?GnNAmri`fBf-ivy9fu$*S8PoC#Xe;z( zY9^!4Zj}t2&(t1hhdbnjoCZHfCt}W~f7Eb1YVH9cv#I3|NvAy&%g9M+W)(|H5jD!; zc8yO1XUebDp~@XFKWjF~JM8k0h{qx;H@CcN%E;yt#QR+c5Nv zL0rCb2gU{0fAgQ!vOftk_xnML)K|ic{z{mP{|z4fL(l1-;OO5gA@OqE;=R0Zo~Z>= zn7QTU%D_}d{Umz3-Kjf5$K+(H$DWvr4gzNhjL2^kz(QABpigo;L{!Lm{D#ZRuC>-1 zZH7FZ8$7>z@f#$MisH$17^1J_>sDy2C4#WZbyU?N>`)*Aev#a^m4OzTAs8_IPheh&Cs#0`Nsk`%vX4@P>y zEyw{@8^8Mms|1ot5#|y}AodQ+PxumC4T%JGVOr;X!zC8GE-yFWQ+Hn7BdH(%{C0!lTMR7mb>ys@u*}%^3 z5CseaFTj9=h1^dVUI0v73IGU*&k{Q(*1(1y(U?TDt-_t$$$hqd{l~nzhKBmI77}=t zR=j$5OGD}Edc$h@!uh-zjeF_(y7tl|$KhD=@SY?B#H9TM&*9tWWBcZ#cj6<@)eUZj z7Yas7JbYK@HmKLzR1_}omHr!1*B}q{PsoiQ{J35uiH-X=kzZzocs`ALH;}G3qk3-; zpEz4bJbTODBekC~#-CJ^URvSK*O<+3QMjL{gP+LyFkTdu-YNm5SMJHTzrIcUut}GH zE9S(w>e}}xt@F7l0r>FHjeWa&j_2`VS0bwo1^AH_DzsbaD%V0u6aAcTM;)=Py^P1M!vyTOuN%B9-jZA9CF_sc);G zzRZgQTT^oCktsS|!d!wk3inoLFHjW=5-~f3@bk?r=?fwsI1VBTly6Vld{#|kM8K9W zt*=m7v-Y!KNTXH9_4p0jv-gtglVvPTnr_^ua=0UlBMQ@VCmgXXMD~N^C~|Ddb0mZc zYP^!P?dI_Iphb`pl84HwGOKynG0v=D<6_VwcuojX&-QEw_W;Kp!eUO#5k^~_qhT}Y z0Sf03#_z0NRTNe08YqU7L%~7`%13hn6*&D!+r)(?jdhGuFdi;u*q_TkmoFN+Q7@D% z_?<)bs$Z;2hO!VU`-H1UnF2Dn>3Fb zK^mb=m`o2+GiMH6a7Js%qNh(NOkm-go{DU#m5hpT3^-6xot@^n(q!H^ZM}ULg*I&9 zLPjcg1`ffOXs9OB07JUtZU{-0YIWA4H(CaCLQ>t*y?Y4Fz?e`x~c^vozO@QA2K`nO2Y=)+UC!4Kd1>f7Cj(}PA`wG zoN(>itTa|f@5+wvSAvOgYo%O0<^<5 zo^=chTQoJNYRXb5A-~pOT9v;fSBsVap+U)`Z2}D{N=QLP*hC@6JE;d_Jz&4snw{8y z3fZ^0mJ-)8m{?(3wUbUC*AV$EAxJFW@&p)|GJ$1tOfq{%yEcDJ+IVYb6M@B7mIdN9Wj09*huY=xs1_3fntx@xBPcMKuCM%)g?O{Eh$o^pp&4A+0LiUs z4hZ(XqwJ+NDSL#;=?x0MNDEbnNR4lMg5HKH%{^MrLIQ`ktLJz9&g?Sh@dl!_( zqZ9Ru$`x}Sk!VN8|%X^Sz^u-Kn| zmnTnHIJS@lV{E0Ijdd~f2YCqY0BRNeoF$qkEDUj$oupE`i4#Q&(S4%*7ei@{XLg>| z68QEmql|~u%gSt*k%J;E0~60veF~En`b04&5rv6X#>EWFVH%E(yvZqA=uDn$Ske!D zh{7s!XxTA&u10H#HQopGY=w;|Nrg1A<7Ht)mi*h6OL&~QKeZNDN-J$v=OtOlqKGO* z(SVYcl8#zTC8d7=Yk7KNzAh=QNwacoqdi7~D^+#qn~OB^>j@htlRxZ7ZGVGy9W}pH zWn}NJl(M>Gp0s$?)XPLG(w-2xO~VVVA@+kT$pcGXue0G0SOjA@peKaP5YCy{w&dMoKPV?fA$dEJ2>C11hH}mdFBMcyLVE2>I{|xhbHeT2v*9gp= zo5)4FE2ewhg)@_lktnmrQ zDf1erQ52UytZQnyVMtTotU`Ef2ARIt`ZeSHos@E=S&T?!>ebZ{Z}ZZ`P(2%8N`s@j z{0fKkC^6^jYGlXxpsE`CP41uHBuu#C!apG=fHnC3`n+LA_X;T^RN|zFM$IF99j}ux z8H?)#TtT3&1DCSVZAt{i1N{_=vF5h-xWhQk=a6LwxR&ERy;W5LvI-GL8#Bt#Ib!)6 zG1p47KF8_HL7rw17}i!cU9gXg9z1@H&8cM<)(a0z zOk(3iM zPp{fVWVFCzm+1sksr$e%kVHM8a~&yJC)*;yJf)+OZ0MJ8 zzcMCHX9wo$-z4bIPGOxk;i%PPjL`_HD>}nc9d%^bq`-NO3$mtu#YP|SB$ z*$rE|Tf61R7fd)4jPV}$|naTXw{a>7ubQ)7RA8RPb>l< zFJAZ_pC+q#MpW+id2%#sgeFl07iIxxk8 zOtGayHXh9awXv_cv9G<zfsS*`U4oTV8^ed;-ZI92&{&r3_exdSSWziKA zp9sp1BGqF-0dB9x^+>`@h`Y#vw9N+UDCjx>LUY{+V%--ZCdnN%JEn!MDj($h^`~pT z*~08DBl+^~(v!T2^&u9BS`)vSRV`}CqP$pGh2;%^6GU?oOgpLgC*L*PNA2J?aN+&$ zbAu~yp1~=FQm_0JVY`EuL{_8877{>Kf+ahd=&YnINuo9z7HKKMecB|Q^&%4gy~_0K zn7RF$P+VIty$(b$o2Wrz{2nZ(YAY73GS4Zh}BW{J1Zpzkl;e3@IRJU!{xtclr6-u|f-f<9bzsXjyesM)k zt=X&w{aabXnV*tdeA-wxuIUUYtftEm67#BP*mWFtMQPp8Q#z6AF$=k~2%lsXq)~=o zn9ddj*M!qRH6R6bBGoZKn?QffmZJQ?o{WdCy7dCjwYs(Bx(?r2I{Lw&fMmtg10Pjr z{hHsv-=bGbzCfKtsoGm|HypIz3Y=MO2|C4$a6&Ofd|T5?vV2vjyf6>k5Nd5HQ0_p` zZsc}|b}L13c7A?@7hVf;bAqx~0U&t5=reD2^&5WBbJuiDvYBg^ka*-uum>+b7=XEV zF<=spz;iSxS`&!XKOh~ii8E@yV!nH_qgy^QJX}tqc%|^0H~4(=x+x|INcsh?^Ft&J z;d@BpQ4Hi&l_8*GtdqmB+~He9dBne)yZNp8P|7>| z+x7_9wRVveFjt^wlBVI?Qs0Yk`}#ZhoXc{;9UaRBd(6kxLB6}OttM(Ed8*NU>nyiD z)>!8u#iN>0ehX~$mgf9S$3LE!KXJ=<-x6KuN^4J5aL03{&nD`kPV)QH(6wZ}JSvq_ zw-A46o_Ap|<`G-C!|5Eoe5bIq8&t$+n;(mJuYbd9-Tx??~S$!7B%Y`t!JO}TeFU$$lTe0-d! zQ(zAN`tjv+wbTDQLNcfJrfzT8HD~)M|AzpS-Sz2DL;`S_E!er!W&(Fi?~$OAZ+>*; zn8tNdJG-7}FlZ>}$|{a?u^pg#%G)!tAo0iwhg|mR-~}hHw!+eBT5U;r2!%Qs=+Nry zl_jbfehSQNEXwrjpdaUbec38znt47;RO+_XHnkRJvg&+3H+vxh21IRHGTe{>Uk)Id z&P%8FCUpJM396ZdSz|ONx>;Dn>ut|)%XIBH{e}^VGSb+laNo*PIzitpE0v@y9-HObC#{UYW>0Ck zy9P`(DlRcM#j4+r{cg58)xoGNOQ+TvG&r~Wb?TBe=eHgCa5TJtL+O{-FFPH5q!6 zm2Ihw!<4eh3%X>B$#G}p_PkX|SLuTjO4DbiUN&Whojt^@TD8&w2E1Ly170QyE_JXn z2c8hYi?9d8un?v|kHA$Aawr4f<_9v5i~!;;Y3)zX)=(wr)H;e8=RdrYh*`2r9t<3( zs3=j&^Wm79({i{~X-{pfnm^sXeIf3Sr$@H0Bd{P-JU8K3KaZm5qkg?N@hL-5-v3%Q4BC4vINeu|t-#eMtE)=F*q!`v~ZPxKmps>2Y4 zrGbM!1b7+$dhl1=brIOk0xGHFkbN|oAuOVCMDgCeHM=Ts7fyQW80CJ?fqjCA)R0!l zT#}Wd2{OE>ze7#2etiU&V_Wtd=#CTM-PZNoz$(uI?qyXE=% z%sdnCh!>b9t>%}~=2B&|z!t12+2eVSj-Xk^KFo4&O`m1(Ze$z>i_=^(buS8CatpiS z4?DQf(JY@w9yQQ)QyMPGAYRIfxpE2{;{Oh}kHfUGe65yt3H_X4LmtBGb0FEZe}&FI z$A(d*x!^mMea<=-e2q!!4k7VnZ@rJ5GS327mWqr1?6pE zeiu)!Gj=>4wF~8-cgyOINxXZQiVMT~1un_eMKyTz@!xjJ(pmeD!M+BC!3f{J;r^=@ zw~VQqsm;GlYO~c|wNa1Id_y73G$A!HL`B;y6bu#r3}lEX2)7nxRz-$Du*zBwn`$go zaknx@W;BOO{vwieK4X1c(_yjANJ@)fX`V!!R9?SBl<+(GoaxDX;N70+gSE;nedTff z3WJ>6Z9Z3=-1=`v^ZX?K*{!HT-N|*!pWp$}H0w<&gzf0Ch^Vbh|K%O)q7xp!e#soUe>GGr%G&~}Lr3OLE?FpUpnvATb zt|oWatBCqWM*VMIY%0J@f{!DxH$HwB3E?pGRSemreqe^d9SZV_z{_9fxuC6^!?iyq zc{**?k^0Kyd_%*=AB0C^_TqSQ(lqyKwvIBH6|XdzPn$Qldd$2MSZ?V07R+hvW;&_U zUa8N5CAN6Hn#FC}mYxI{+mfN%zg(`Xp;as3I{nMs<|1F^leK%lj*6(e9wd)PMO->#gWA+$UPm** zTTFAZ_?o@$mQyKx?owSnts749w@r)I$ki>OLpJkh80)#Oq`==9kQw~wr?IF}qp-z9 z4v5XIQ=$<_v}ZSV_tdW6aOo`u8|PUiVgG%@c4cXOEi;zk7LG1HT!~#Ff5cp)%CgnD z@#N6kHTzPsPC1hm%w@#s<_1{qDyi-&g5CZuQY4@c7>fbz2z_Trys>;vzBG?f8dv3H=H_M{}x;>j*g?=H>D= z-Lb8|`MzaZ>diO&uzZsf0OzsrN3_#^htLg&gY;mzAnn@`Sm>-hyf-0N&tNDdU!Nyl z4>Ln(ECRegN?{J>*&V}D`PZp1_|sP;l6t3N2P%w!qt?lhG`%7+rK#tH^rO%U-4y>; ztE;9J4~MSYU_bi!#z7g_?Y2r*w@ZHE-N(~rq1YuYcX%A;u@$6y3#aUQd;fZb26h>>{?-9mTijeP1wRe(YNt?nM3zIfI(@ltNl(~1`^8< z>-Mmo^b-r)Zc{xgrn|hqcoJKsx-u%crQGoRg2H+Ca2H5ReTdOiV`~~~$o#qICfJ`{ zHUzm5vZ>=2;^%C-BAov1@K;ct>P;8l)s1KE^y9O4&om-MH~wS3{p{8|H0)1GL_uGo zB1Dsn_I_DhS-z_HlHbf{!KtP|AwoL*raQC{AGWJFCo6~*xg-TcO&Im)+{ zGU5SoZ$x)s^jw5qV7LFyMnR}l(-p-Tz}_+`C2xv6HP>F@s4^wj?+tKke0P;i@HqXM ztYb9J>Ycaet8zD0UYu2xNhS}r-hXhHZ9zl;0lRq+dUzZ3b_S#s@|Ee98&OXEkzvf? zUGa?RZS_>Or#w#1vs{mAnv@J~rrBbyk!_y7?99;@nM@YPL=qJ zUW*?^6VGgrHF+M1ztm4TG?&YR>K6hUp7X3{6<;d}a=Q3twFq7P7@Af2C25lm^L^II+92!A22TQaG0Fq2bWr$?5wJE+W5EBIYF zz;!J0a&%-3&dJ)HZfauW*}lYcOl+ME=&LRGpJwS5UxcRkW{5_Dckp%kf&^|11=<@L zLM{y5_6pUC4gI+@{@Dn>WR@AWZRgo-aP0^`&F&uXX-V(+W6;L7Csptmrb8fg*^^8* zow=DQJIhgOq^9beaE3tYCbW2j&Rrb8gj^jZuYtZ=6G%>HL`)%4AcF%0H@{#tGB?Q? zuVXTD2k{wIvIfcCsgQe-p8D_n0}*Kx+ZE+9HJtVScveGsVRanWhImLnk}4WEapG>= zgtIvnVr@)9j(ls*=u8ev_kvt!_7bx#M!9s$kmxF^%h6BJ|2iM$4Py3z`ckKBf0Ylc z|0;P}nA$j)IywIf!kVP5!@pW!5B1xiTR70AHKohw#s-24g3zr13bNm~m4MfDPCw zBQbj+(3U2~F)PkqeypMNfQcxz)Y#)EKnH#r*5X&a#Y%%1rFn{O0BxJ6kEA?(dr5K* z8?Z)s4BCdvY^{Ww^oJa2DFkuhR29)o7PGCflcV7fMfQ?8jj)~@u${F!Ri^C`k>oN< z6P+W;St_JaZ{gNiY|RPQ=k|oNp9;I!iR%o-L^oCcusS@XV6YY8<=p15@Xyr1FO1|` ztkFdS9DCKt^(#Z#nTok7PC3W1nk*FOZAif}QRZxCScrMLD0-~sOi4NDg%d$iL*Q^> z8Bq`Hxz9I@g<>1MI4X2_c56*mXl~@u4C1KuNH{S`ciG{T2#GU72d;d0+D*D5`8Kj& z)1+7FZUajgQF&uckKlV|nyP=&x^h>J((2^c$&7n7nbh_}Y5UPFfcy|u)j0LPEpC*j zj41817))y$?Kfb%fF*#?I$dGvHE_0CTcu}5rGC_$`D-3ID~Y`%z`RF*(}y`ec8Q}{ zf24#ZN2D`jXVI?d$u1h!v1(iA&z4%_1g+2MhiZXe&vKI!D9Q$(fav-y5V+*DxYLD0 zy!A!dj!rRw!x?IkEMX=)EI7S0TML#81Uj6?Ed@8tX(!^gtrR44yusVN20}`oo}#FF zLGmvA^%M!a1=GysoSUmb4`;;|56+C1ET-CKa35BD4m%Zd!IH_!2ThEQ=g(HOsBwLf zW|%*Id_*09v+tL4-mrXyn=OQP*JQz=ZFa!#?uFTvCGax=a(tYS9s@nzIda0@_!66< z2V#%1!IuSXujawiVs=D85+NW(Q{eHD#kD@Ws`0rtzqcZCD%+E1%KMw`SwjjM{4M7`*4Fbz(7ag%u9*gLzyi4^3`G+Dq z68yfwu-2F9T)c6RY5WDpNe6b3_?SY7ex7L~elZCSnF`0)^4QsjLZsLPQW;D4e7M&% z2pG^QUoFxRi~`pLePQn_Gqnhh1&l6HNp!SjG{^q?ZzbV1z4g(%q=s_Ks0Cyc10WHl zxLbE*n2MkSO005~OfJ<4M2pTi8Gm50`Gp&g+R29r3Z&{{9eX+L{ijTB&+&uEyn-ZA z9Z;PycYHB#14t>gC?uPi?;}V_0!WoaR&A?`Y9yTE$kefDUa{a8On&Hf>l4)yVr!~} zz|+?f>61Pqk4`i1K_v9Z_PJx;=<*D`D|V_2Z;ddE>e2oc5a8Q6BpdAj1@`xX`%HE< zPE!DVbDuRl>I&bP)()EsLA`NgK{136-lfx7-Qi+Jqgjuy8qNvwuu@k(34YV_7v!Z< zY!7Ee$cNpQhi*;Qd2y7(c7@dG;_EP@obG2{x3|sFhzFKumqce(G%w%{s6tij9(vgE zDVwhD6%Wo1V%T)ir+=ukGOwbK%>NxHF}{0ctcjP{!q>*>ul%b(Zk;YQ>QkCfvKArx zVL7h4pbxKHzFjF|B~%;tm+I&e+p^pAVOuf&igDzf!WTNp(l}F+_W&~*qRQA8#m<;S zMe4cr=<~Sezed(p;Y`l;uf~kvmu~!Dt`Yt-vI^O|+L@S|h)Igc|67p~t)gv@qx$3H zYdnQFT-3%wRBh}qpSfS+s4etMGNXjjk&y$TTADB*)NT*OeEipP)p8f1AQ>qsew=^~ zu_9eHFfh);LUEmtYA2f@bo&tL^h_iAcmYY zBi&#+!_Phr98u;W;AK))DXEjXWNI<(H-b@a%W70|`M~hF2&*{4Z63HM zjMA>DqqyTftu%%uUcNt7Y1`W>B1-)Ln+?=;Mi*U*6Sc7~o1Ia8&%hTZ*b3YAyc?>M zj@Ud_ouRK~DzQsu;+#h%+vGV*vid!&%#JQP$Z8XKzREz=`aLnHik22;ss0G~TLMy7 z{xrat39VmLC!ruO&z{gyB{AjV=e@~b4R(#AEGfb`8rd%VpaYh@ltBaI09h9Ar}imk z`z(quqr`aXK=c10J5Z zIo%!I+U!?gV18=Jt>t2Wzj2Nt0LNZgLqTmZiznXGW}&`v<5HNJJ8EGUNfLwq;PBTS z^bK7A{X0+`*5j9Yo;wuR|l{H>85>Y8@US8-(fi8O-~h&O$1H0B zcBH&B;*a+UxdQGm75_^$|I1bpa{cb0{BOx_Bf`a=WsQ(38L_9Zind9%>^VW4o+@$2z+;lg6pqrK*sb9qY3HZsTAeo?7rN35? z)gHS`1xbc`Lqt&c6V=Nhmm==$+@=I*1&xnHdhGgC-f`FEb6E4 zU&e`uH(*`92Rj@2gSxd^{k{+PR@K)cYL(IT`VXy(io%c<6$4&^PQZWw4{ASOW0SdbJ3Z*=iv;SFa{||9uO z1@eC|Jo;ydl()0-l(#cB{lBpq$zM>~FUdEr@FmekK^`=8n9*;LB{&bFFk(PLg#;;~ zmW3t4I3{}P=7Jf>J1T!amEsr_|DV|3=jl~&=(|QCcM}gTx${21*xp{=_sNAY2Mb9v z9GPRZVMrahV;tM$B%H}5|JorxI_PJNVgeau2Cx0|pATg`cQBBe6xcO_Ut>F2Ot z5Gu{m#O4Ca$dHR_)?K<=R%r>k;hiN|ciHE2?*1)+rtwT8WPxFivH?$V)M0f<)F5hwn$0I&!kvS16o_S9`6`dKMP&7vmW@{0|`D?0l>x zgk^~EKwAEa^c}QuJjZeyGB2F(;`inbr%VbLISx5NxL9*yPK3*l#l>8AkmX4UZ*ZfF z2O?6m%w6Qz1#zYtbiYZ%KsnL_G+i9I>hzGP%lw!F3@;xrc#LctL_!53wsN56B|n$K zz3Z4n8iSgGuJjFou;jaAgMSABnC~8(h)Nd>E&JSXH<8=7IF(L$2|ys|>}h}?9t?7m zDhRm)gfJCXKxL~KvUG%DZh;gz5@pl_+U&H&X!JQrO$c__13V**LOmJwpMpKyT64&( z6MtqrhY}yTwvHHhBFTrU>FzQy8ItOTQm5AiYZ9O;v7fB_0fOxL1<@`yDDZo3mK{Ef z@7VbOV*^gUp8&GaxeN3eDzxt4_S1h8|AMB*ZDM`hFYvGX_5b_@QFOI5b@|Vm6kop} z@+gWwKIABER_PR^DEFeBkfgNR{rzE~LD4}X0RjvIPj!u}Q!$h9ry#Pfw*YGjFrEd_2GIlV>mhWU-Kumk=Bjd~i3>v#L; zwo1%HTUX%)P7#cGb(Yz=RWsdX&fFF1JyXAf@ij5K)COIpHd;0}KE&SRXfmeI@(CkL zhdulzzN;`Z+-bA%nOU#t(17-&?Yr$?=a^L7O(xNe-`3uQ5jH>$d*ges}}S_0I^y%B*NVrZQrxxrC^m@ioEb_O+hIEsK{ z*QxR3ATYZ~1rqq|N^HSH;}|q&YE-XU1GL(($`a>fEdZ6{n`6{jf@g=!e z@S`|?&R9}W+W6Wdeb+vqzpWw9nkBrEKJI+a?s8cVjQ!yCHz4+eO_5OD<<74}bU(3i z&lQ`E0yiObjJ2zGcHS5U`;&}c5E}?1`Rz%fMDe!IkBGyNKj$f;#02fbILanr!wJ&z z3N^sN8jb1X&>=2{Dksgx8^`-;l;?9lZ`L#~=W1985a@0y zB3_6o%T$@Wmwo?l7i`ps%`5fmay`TS4>ZGnCNO1B=P&Ttf4O05w$3<(((v5G0isKgAyiiuMy0y99BLjd!NSxD0jM)fLpg`_E_`DT%W zNYc7A+vrd=p!Bf%qF}LM9Mn`(hN|aN)K7A#v0^v65V7SPn1P-;y(m=Oq2z^6-CusI zxuvROxkw%6XgsAx@cchcry~zTVSS5sAYk4HLyQa`a^{E4w^=Vvvllq57IX`XUd1#63sT2xc0G|F z0PW4Y=0KgFLY()9?fY};MKZ-cw#9|*wd%S)ZO2Jd*nIadmrS8LuhWdF zZp{gVW6{yNN06tG`+eLi-CI}b8x4;F9pFaW@7SdZNpFx9L#5VVs4A}{az(2dBhF(r zYuQS+pGL{CwV6KHdR@L-sj+Zvio4`MZI|efr#qGo7(9^4Y}ZZ;;ghDD{X6WTNQ1%J z861h+IMsLa%jZK%hK&lXpG=T-yVjf;3xR$g4S~N`p0$%IW%;@tzwkUf0@#O_vA^rT|7k|R&5$c0!?c0{HsEDZl8$k(YpAguD09AJV0HcGvQzYw2-yzs5}q z1Via1sQO6Wf@fcN`$lT^qzmNcrUj$bzS1X z#NG=lELIY-L|3`1MEPd?2sW`XLB9F<^hz6uC(%+zOgDeDthm!j+MEcB6HNV`L321> zZ-t(aCD=P0&J6leJ#%wqcmT_1CZ^8tWmTuV9kClk3;6WOpTU_kj<}L3{I-n&)*wXP zf{=}0+uXD)wUfGllw{-Ahtb@f7Y<`8kre5{Wd~uZcbG4iabK*^-%ix$*Jdjk#8G%F z#cU37rJ+j>`=(LB8g^Ei-u0P-p>LZ>gAh6cuDDDDJ0!S&^l#YT@bn3N^vOMsC_%!L zp0$f}UB1VS5hY*^e^qp&dmGY-+kbd2`zgPtF_~RcnBCxBmTp5Gw~a9J57&Rlc7{N7 z28oJs4Qh~yd0|@5VAc1fp%*S)W68Y1nUi9%k$fZ9IPgSwLslNRWkw0Tj?@ZJ9>9@IYyv^L}Q8_KWz=K3{S|Cg@p|IBY9Uz|P}Lr;6xet+1!vPt@u$vvvJe#&Mvrc`YSPlmVZ#h31Hn-^0hJB|*vPP{oD09sHS^U~uk84QAi_72?`cc12P-&-arR2orDL7vz!j;s=qWB=jd$^KX`jTOCdCZeEEN0~364c{Z2>IamUJwwa*c_P? zl#FtD*fQfflHP!=w|cD1S@Edg%PXQ5a>?pxiAf7HhEahN9(v>%6@e||@$l8&#t}aE z97bbDUpewcaij3GRl!TIHGpLOdK&3qy8ul-qKVniy^01->=_NuP%t{dk`iNcOYnDR zE-`mI1kCa>d1)(@`F46ck;m+N*|VFX94Y4%e>QWIG>m)2O&~Xh0h8@rV{{5^Cw29@ z`o@W7b-h+!XDu5|V#Vr)*CMivyr4g}v;brO+Obp@q`Wp|traw#O;_l*QcHU4f)FUz zwP37FvepfRNCc@ZXsrBOJl% z5LML5GUrdmSRK10JIS21`)IgDI@E4as#?8p+^N}#H!yt3H&|~>4}!@zOe#p~COU&h zOfL)rUrtyL`~Feix_^9GqWJ2dIO+}|Y$P$pYBP2BEfaUgJL0&P(P?-Q#T?oZ{ZVfg zg1m1PTPzRPL}{8#6gWqB8eE9^zfA1Wl%T!m@AQIsJ-}Y4 zG&QKePO=>kP@!f@4n=lyN`*h;@&@92CociR`}fT)RcdpmEp8h5GZ>V9wWKVKquxWK z6bjA!;NTHw#~@ku%iWv{o-{>h$Z=xdGa^ z`6(33@(;dyRBXg~JO2aF$;{5kAD#U9#7b>pV-Oq`x@ejr_n-q%xEIjTb}xeuyk`hOt%STPIFz_5Hc8>`~rnKuRf$N@x9k z4t8jSnooD@%`5frmrcpbE;MJci8Em{a2Cn-l)^X8e8Sem%f<`%jn#o?;EZ! zl-+`STSfd!+7KeuY_q;&>$tPHnsx3f&Li9w$m;|JjFCShMNGtFXqK{7&RR_BKTI5d zZ2-c!MSN26KeVYvydX~U*NBvm24F4$5iJZOSIgpUna(6Orlpw>IrUT*)O0D-Syy3K zUJHAnppY$-JAXr{t``|&Mlb*Kj-^Iw6sq+>`z6q_qP={QwNA0^)#gpj_rx9+H~-yz>8_naMwv$$6!BHH^NbTrFQ#GXIjk@y~oCV{d5kAM_3NFHP4n zmMHFvVw)v+B@Aq8-$db6l zxcNBt8GvQb!8qjie#W=~84@UUUr%gUNO%seZc1}~amA^Cn1rla%+?4^u*VQ4XRaE_ zdh_BB`x6hj;TBeJ@!{Kqs}3%`xGH+7rBoMh`Qh<|n^$aKgPqW)_yB@^a%{c$*IKEm zWtX>wKhxLk0qob#oSo(Sw343M{oL3!a3XWYCyD_YR%`7>WO(C~KZim2ugv6OZSd|k zj11a(J;y0mK@k#;!u(qaXVRwIbL>l@ltH1GVpM6|e)%@fQ)#4UZJv0nLX~hkH!Ih@ z8<~$a{Iu22Ya1KML(PvKs^?@MSrz0XnZZ7dm&r~jXU@L0wN@hhMRoNzC=~p(qkVe* zNYFmv(nkJJ*Q)fyY88wrhDLJ+}@fXaC8>c_1ITb5Nz7{BE#Qtjqb^92-YU2xDc@9 zDkVZVqckW^*jWkWn3D{dgDuI`K2tnoxF_32T4`2mN}=b&2gDmN#VO`!iaNThKLXl= zX+b(Wxc8!ync57wM?4c_r_9cU;vRK?qUNZQdDRiCEv2~JD5Sz}PFQI11ps%}&S4e@ z3#nBTF59S?iiL2%39$nE_`FNiA?8gWv)-ugq5kH%q1ds?5am(g$SwN-F6EP60F1um zDfz-0rgA(_Vyb5&nFtBdq=m=!0KLG|-s5kox>{`ZL6@~0*mUphTiG{ccA2b!+5?BN zfp7TCH{ZG~_F%k|RqN5C0_GNy;C+R@UYjJ z2etN%DsByvP1}1O2ZwL(0sz~YPeF}uWIPlzQ^=CRWC;pn2^6Uk#5^70k*x-MB`(tX z^?kT-v;)E@Fadb1OzJy#d8%W713e%zo)&TAqmMQ{u+}Po(gX7}>rYXv7`bsYUuCLi zG4bXH$p`67lTjCyeDTwY4r86UT9S)v;^#E-6bjHocCI?ug}Q!DQ;UKbvrnaXbU^sEl;E6(D9B^ud9v5!Rl(EmGFLT(BW>kSnlktSZH(O`2hn^zq9WlMK zB6LnYYO%-mfiGs>0I9}jVDYgrz+!Eu>ieBDCc7!?LuQB$y%N~q?oFSN0E~y^Y5n zqqB3_Ua+f@t+c5G-_D?X?!JJeK3i0TDNovHidTdDIc?G^V;;LK@Ur)JCsnd)8KIu9 z6d1uek^#LyogbKJ(?>c5!_&$+gJU*oC8GvfTd%#=a8!ahT$6uE4tR3ZOjWCbVPH(_Zpcx9nVt^5|L-C}yQ}NyFsml2FZwt|QP6J&g^0zWo|?grk?)?og7^u8UzHk5ITdy>Y4UA9zF115p8zmIKgJ$wA%f5YS;i{vvWjR@8OLTs=Wkh(CFrCWG+MOwr}( z24W)$+N$R@4?jebxnvy@ll_GeB2R_-h<^R6YIbfs=9?cSh;tvbwX`ccSL=L4>$3CZ z65J(K;Bw6#!AO=VfGwZktLLc}T8q>p=9!<&+cBZ}YpF)5*bxM(R=5<(C`YsZ*k!VG zAz~~;lfHwx*TVFBpn7AcW2R^7<&gM>b`{6$mly(+s@KB28K0ILNzv{E$gAXLSOhO8 zgC(^o_Reuj;RJ{9sWgXVRiUklGLJ^BxaJpONm$NU(x<2@XXwMHTRw$2jt)r@Idg{L z$go74GV9!Y^nJ}M16lf*x2g0J((Ud%oTnkUyM%;2FJ3klFTsXsv*k`KB|h(9bB#}G z{trmId)&~kIy|41UO&e5Fi&nAA^J?2gz7`g%rTheL=d*bP*wIaa(TEM!y%y3&*5OF zSIm1;6>j7-6}9uv|J3ySN0M$4EF#wU5;kCc2^;=DN!t7iYWg3V26Y@&)DHmoPZ;3< zfpSqR5Ngr@WNOv=L8?>%$|Qljjn17P--%czf=7#VeSp9!X!raf2{Q3iVDVRAQh@Zw^k8sKLp z-cuT?+#U~2zoIrLp`$*-V1|vQ&3;bCn~VmVF;viiqMUe!=Gg5R-z=ijGFSp?t88O} zf+V~xA*rlMGNi{wdA|PlXaCt>qxkT0G)PgS`uhUK9v&e<8XwO=`NI2?;(vIUD{H zRrzq6*m|O&fG^xGW2qrNBZMve5@*Kd8nTEAUVe?MmBya}0JnxxeU%}^JCz!1)h-DF z!8p9u$Cvmp+I1|*PUy(zcVf1v^&dsKL2_)q!S=wvo$Pkl+M~fFZGh=K>eiO=Rk65h$H^`gck>M zK;ffDVKFS>y^J)qDe5$0O9n~y)b`T8I|ePU+%$DSMKQPXP`$zr4z)6iHMtDP?Io|i z-=^%DD1B3BOy=pGM$Q@lIs7@}VnWec+n5Y9spFz~HL^)9hiI_nF?qDSJ)Sj(@1!D? zkg|=_^EH$!zKy~kob#ib2{s6ADu znDf4td4^s3wBqL*6I}8ucD$gv`m#dFhxOogaz2egn`1%^qG8@<=)U z*eSpQqnDuX-Go33scRQA#`hG;drHl_x5jsr&R4a!p>p6>D*Q+?7Uvv#;H+nrd#xQpAcUS)#{z66xIEz;EU=ium2NKmuQfw#&YwlSKN=^(J|D`p{nK z`wS1>3lv`u|K}6#J<%hG*7q)zO&Kuw#4G4rJD_NH2)ax|nWpcz0^GM}t^NP zK=&;8s}IEgT0d|RvX&`+g(l^%8scBNOZ~Hc`0}1HRX21owlMiW0ZRWXK>hgKtQ!T? z6_bKC8H^Xq0S@IGL5(7tKmyUhR)Dnv^|}d}CWfn%t2Q>A-7APYne-36>N%X^Lb1HV zh&$pZp$g_~AWkA)q@n3u&gOqV{<1q?5%_&PaBDFHc459a&`0fDP0p+7h-VD4L}H;g z&@fT`HL@5??R<(bz8pTb&au_69I4O<%LjWb&@kyj9b~T}7`Xm1e%{!3S*chhT0b=; zo@FdNSQ0^t77IZ)Y4&%nay6N}A>HPeu)sv3?T{-~_sNrWiEc9JY@n(1@J8vhh}-hp zl+0?0vJCBO&LQd*bnxvQ8zMOB1BylM>sK!}W~p)8Dih7GcTyW-?0w=6H(h=`hvgQP zgbiYiW;iuRo%WT9{zv+6-0>djndDB7l^tw6=Ka4XY2%vX@sW$~cqi3q+-~2dCet4> zPBc61FwuHURKe}cbZgU?#?5L-m7BG3*JYE7bW`-m1lsIg+LX2qtqRairrBVnrfvi3 zJ39_0lAs|EttEd`%2_&jS(3}Epj8nt|B1x?&$(Y&UdDL5G_bCpou zZd5!4SAJO{g8ouod3R>YATb`dTO1#4^WXDe{;L?X$PfjC0Cv0_XTk_A-2WpI@jBms zX#>R#f7Stvoz-Sv8zI-}9EAt%*ayxx;L?xHq+N?bLf*h;v+6kJ?5xDLW7e0v9?|V)yJ#M>=WHy`%Lj_v60I3lU7vb5mzP@yO*db#HD7B2w<-`u-G*{pioXl= zON(083XAvt<9|{1PGOdIS(j*L*tTuk8MbZPc4i>Mwr$(CjSSnib@ta)eV(f7zpATm z-m87L$C_)dIS1UcRS91ydGPKlua7~h5oJVj;v-pM6?1}taLMGb@WvP<%keExiFj=@ z_%SjeaD^B(qY>FOqYw>pv4n<0u&QU<7@hr>8CPKn!6r*~<`ljWip=px?1PYEi(vB= zp`W9*T|;`BGrTcKi1`FX+hZHG2w@#p;Y(&U1DWp$AhOV+F#qv&P2OBVn?uZx=FiMV zg*GfMjY%!ij;+^@^@Yf#;PL&==*)S_DUzWIwW5pBomUz3SSmz>gPk&}&2jw<@OcGw5HicNbY~|xLm+NI^a#Z+hOA~IJ?E5J z9)~0r1Az!Z(n!WOnIx2T^s^o})(HqA&3pKM!CSzj7MjE=ZGel()5pU$VieDVAMcW$ z{mol$=?nZEBmqOYKr}!W>4Gqp4}oTbxz24(PjV;=-XHdkTrr4hyTDdEDYlyj`2 z?oOu=g~sL6j-DMxbC_$NXQf|zFa-F9Cn{;()ofHCh;^FMQ3WsLT>LXnNo%nmzx?mk zLcRBYi2eGjX+k@sYQ6_hF>(Nv>3_`L{@;~J-oP2)D{2b}S#ULR{Qn(BBLTAAzuG6; zI+FC31PrV&BumNifB=>z!E(XhF@ljYgl*#3+bmdb7}?Glqs)zi zm}d8jm|sv^-nV)Tzue*lu=}Lhn2*-Irg)FMkA^#6_OkVU{llAMBx#l&FT=%9pY#?_c$Au-@_mM9p$1J|((jfe(lR^t zaG*W(R)ZCdv@>A$z0tM`Yy6hWy3x;4m(_GmBQXMR!t)3aQguam8_7tWG+MN=jjGoN z$$C|WC7P8g`K#yk1Ugpj{)8ZQ##}<0QIaapo6;bRU93X~F~G7?`gfEJJ>ODI;4s#v zAYjT79>PK4Dk7dBF3iL__uud{xt*1m)#%s70;plv-{q#|;btrfT%9qf->>6x;*p`E5{oow3l~#ipgfAgmx+Ro4~aQS12F67kZH!cSBgH+^(`0QFwQ_u zfMUuiObJj#WC@=tC{5r<7^Ur)67!eODZS4^w-6nNb$cFw8`QPwWOsf@Wb8I_ON#I4 zz91Ui2%EJ!L0zEqM{9|517S_Z!r~h7WW|I<1;_9l+wGiwHD?0TK68bC#c2!pI;Yx5 z^hduz+_q--V8u_=e1lKrN2BEF1FpDh_LJF{-~L%8GCc=v+VUQme!Zd^P^W0!b7ZmgR4lCFdH76Xv>J@6DN6L4e7kO>W9`vcW3G7 z6$7Fw8GJUbk-8;0x29YB;%9lY6*r6-QzKEk5o0RvX%`VmxStKUeMIk2X{!{0E#@Q4 z>pSMXM;9LQefjS1`cNH5exUj9)72QG?Z3bCR)gp*-3j&PWIch1J#?_UYfP8-#(W~v zWpV)9_hWjW+)|zd!z~B?BUkdT0&h)@*DjDv#m5KpXbR0U>J?R9-Ww_GbS>UT^XM_K1a+C=8e$Je6NSIa7(TgR5h0~(Gtfat3o zEXp4UF>a)qhG#g3dE0BGH3hjemR8W>h`@-CI0Q|{*Y7}PO+Pcoc2-R2cnROm#!N7F zv4@#V#o68+VKj4#1{idU$#fUl?y5`>zj~YO-=&$lN1IzU4x>z}p5yH2%#kdkbF069 z2m3j=5eLd>2mZkQ7}hVj&W|k$(?C?U6XciPVxo^?gk_73F^mh0oWc^*n-F9XIAbW< z+McptA8l~zGbS;}ee#UI-a9lbE;E~mJl>D+a1o|{<54I{+|CamrDrG2>5*m-W{4wU zd~F1DoTf3uR+k&}>XAx>33lW#q-=wNUUxYdPQW8+{1S|2zl#CMw#`&nNsRNGTwr=$Nsx z|30E{F1uHeHyhy4-r(wS9Kft zAoK$HAbJG7x`qjzeIQ=_+vnVafZhO%W@!Qaz3_j30Hpu2={B(bH%B1ue?`g$ZAt95Fct+0Ds@pdB(Q*b z3kX6e6B1DoYLqA{aN5m9?v3eaS#f`Xwe7Gy+VU_p zbN%)C`U$K8;I8-uQo}CTFZQx(H#_tX$@t?2rY;Z>(Y%QnQgn!y^sG%gm-veXyza>d zuD}@-vc7no`O2RS1jp6v2TOL1M7Jw;qil#{X|E&C`px8WMrSlyBNPRwbW699Gi|Dn zs|uB_5VcGv#mA=t9}Ub=f~d55_U{q78R}{& z_nEXKsQJy&m1w7p_;!QY*KSXz=@A_o{S6V^rbt-y<{FDVwx`{%RjK7ybbVW|mS`3^BANLOGEJy%+9I5Yi>9&S2Ul!;L=ULTsy`WUk>##Z zp1QUx6UP`gJt`Q6)nzK`(#+t{#rA_maD7dB@a1w`koob4=*%;}RRS6H(V@PMt5a?B z%w~8aPTBo4q@ej(gtmCy$i*(RAyR6&lyBV@APO5Uj<;=;@PY4?2Se^IMf@Ga3-HQkV zIbrYA<*&8-p*xI^ZRWlUu@DE)61mc;q4VIc&?}sVsF5wA#DZj~)|3!Nl7eCeE%;=R zXKt#@9(l)CDrvjyODHz1SuRM29J;?BMR$CHi1$O(YIBtk~7}Z1#)MS zEd_au-yrC>VJ)zMVb2k8u3-#sVFHi1Lgz63=h#Eb@Xa|Oq!^;uq8)RFK9b=EC~n#l z*cd_!xH1zq_8E2Gs8(2bh{|8F|M|463=C6)0ZxlOpaAp#_oqchSm=K~ESXAw0iJ;4Gs(->6Vd@h%jQ{$;h4=w7aa>Owq}_tEEto@jY7(fRn!C?`1R* zDlg4E*LWRH8~`M3hd5ua@1T@`sX-r#tx0UJ4YZs6QXf&0G)=lXVZr8@TYz^x^=sda z$Tk;u?JZEVY>MU`5WOyWMRHoMBknBnMU?aV%+CcEuDL4-R8H*NRdk05#PnWW^)Kw= z4k>Z=KK8g6D^EY~Uo~5Cr-|k-ibt?(eOstw^G~r%xNaRGH8l?nwUaZ7ppgv6QiDjn zn=nA7SY07Rqq0_CRn{o&w8|ull0X>E9L?;ie7QUh#US;(!bCi>1Qe$pvdqppk3N5r z1+?kO9Wr89Mb)#u`35hde?HgfHni1M%KVXa&slZs$DZN(^Com*OC0{jCM}&#vFh#{ z7g`qyRYqnRK>j619Pg@d&AGL@-(J9Ob|R?hE~kU(q!VCBY48y@lJ=z}28bdt0Lhh? z#8Giz3VU`idG7oUA~Zi4*Q&762jE?@YFIP~ThKl#OJlV>+F!$|WQ zrSXRrZezt25<}dBh9M=%8R+)`5MA`PUi3Ef;utuFn7GYi7t^}I1;j~zJL=QO#6kunv;?wI$^98wMGX8DyLRFi7 zx+ux0C=-`GG0KK%$;2(a_0gC{tRnGNtIx~8dZi-Nc)h~F4l9dviPc0LFPMSg$$Q+z zGB#PqOwOH$*xX_makI__CETAjyK%&`0h8z`-|Gm+PO##D7%9OTHI!kA;P;?^p_%r) z@!OGC-;Gl3L{+WXannx9YtU6~7UOEbI&nn9w;s$IE3wizn^R}g0ol_at=l@o!Lou+ zZA&r|V%W}1dSIESn}3A>1gs0{nNKBifB-iU&kHn;d6 zFKP#Mvk*bM#yavx=76#(4 z_-_UXfo^(*K(g^`Zx#RAEm7F6qUPpg=`4``pM;**jj+4UF;p>U<4B2eLUbAZpbo?%VSM#8sn0-V1 zN2$(Vz_-;?K~Dq#e+5un1^;{C%Np3282=m8D=Em$%cFc=>a^EZ!3YQCNf#5?8da2V z$PjqNh?_GZ`tPjNZMcvY>a0c`xBCd~rB|mMOM72~WB3Gh3;aZy#)U>?-b0$dUw7)> z{L9+N>-FVmST4i>(Tz1?+YKE|V5kirM_pmxz3GJY1GTgX>57@>%4`M~DDh3pn z>IZk?uk$3-0HPG^6x%?;4W9m#Tn1++;W@Nf&taErJ2#po3$8rEafWs59QkF}h%~!3 zl#gq9_gTr@COcfsAS;iiT4c}wr6J*u0Bng%h5>DX-Qj>Gefhu$!xUU1RuM17&F`QM zxZTJLgKhKezRXyO2M)ND3C<+BCnWlpFK*^XI6<9t@;2j1If%(G#S_O>C1d(AW>FeKBYF6 z+B=BIV`-D8mK5EoKIlb1y-DAzChf~MZ4bfEbfi(zsWBShWEeZyI%Jf-MU=iHIcy0c z%@PbeYms}Sl6&$jK}s&amqyl0e5T(+@?c!WZjsI+O3iX@@xwGOjpo4Hh7xh`bnJXx zVh|`7-9n<+&dB@t2lJ7?K;KVQnekT)_$L7LqW?YUg{%#noc==ozX86ojvbN!3U7T6 z&|2f7W=W;0mJ~I9;o0v{cm#kwcT7wX>ctyMkV%?J@&p~phuW*Y3;^}d`4MhS0Y!)j z12V2xnXN}z++LS}Cj8+89I2$QR^O0393@NBJxB-I%RNh!FcKJy8Ed5GIxcq^F5&DN z@d_?r5A?EJ%8Z~RRzBBhEMJ`BE1_Jz1WTyN=|Bt^ag^?036R9b4wIckrXFDhW+^Uz z(oWlrzo1#@6l6?%3>nnebU!%i?oPNM_G@Q$%9H!p@hXG5bZLIF;1f5fGHAH}IsksK z!I}7)TrhT6zu8-_1cLzL)ppbf9ZfNgsQiPQ+>CL!Rg#X z&CKX>vY3(iaI$yK&=P3F5P0JNmruZzMiZ~>$(XyVuZ|^CH z(ITo0X1TXmfRT)Ce;+iqh4CE4Dn)LF=-?1ynFS7W$A=y-=Bbq8@%d)y8?7>zYK5bdn^EnxP zpq#@~vbagXA7Gtms^&KFPkxtCBpU7B4R^2=+AmOhQW0%pTPk6FBmFFn>Wpj_u)8wm zJbyyaYo8FX8OtMaZXKMFql?~M>bR0hwTT@f_m41}B@i*z7|lMxnD-|1q1PM^_b|Rd z;76+Bll%BC<5@@X$SSw~xv$+SK2rY%Kw&Tdh5rvd$Nvsa`8Oa`(y;=(1bOQ>WYV0| zS63Ha6=YT$$SPfaA_yy@K!O3~D(C;qCX1g;n3PW00J*Kc7XZb7|NcpFbIFDh7E0H` z;B}SZb(Pv`X8OP83Q`=RwD92Yjy1LM!$Le`c^QLrLSz600<4Nx{|r4nhq!_FK{tH8 z&tZq?lSm(D-cTTkW;!54DVdG96j5P?h`W}43R7Wr8a}6_={x8ur4trP9yBZKEon76 zfwkv)`5RQyCUW4y(+9lt&;tpwt+tK-b^lSlN^qORKXOg!c+{(--|5ZfcM^Sq=47ai(DnZ zm)4^@-NTB_Sy^q7H#H;Y=6P2B1wiPQ+fG?yh+JZl>?_qeF~G$J9xDI>=@aL5v@wMb;&2^2B{mg{IqxA}KD;5Af3_?v|GIXGaDMB0)L zM&qbQd;JueT&Q){8g<4c`~R?h*Q}nY3m9-!t>%|y}{YI&SYL6BAbJ9N>^4P`i>xtT-5Jv1A+%=Wi|4J>L&3gim7ObNuK@|ta0LatC-Toi^l8m zA^6Ji@1pYFH!W%R1OBB6X++9ab{oA0E@b7>;gI2=q&!+R-`cznHk$M0^;5xu+k%xP|9b%u5#@LbyH=_8>zgA%pM4y%T zqf7USuGvQ~XKCZiL^PYgSN`(kb&Ra&UToB?-*?v5P&bTOoeQmDVLbE8i^>k|RRm5j3&* z1`3@(z-kW@foI(r&^lFEl~J62i*akX`=Ty30&)TmGRMNzFc(8N@IojLsk)m?1Yp?;i)ud8`+Nu(YIV zz>xAsW7>GjK;;B5I09i(%TP4^Dg8eTi6F;eE+x#RGf#b|5~RtVo7BtXSua)W*}DdS z7i$=gWL*U+Rj$#WNem`=oD_SHuGOIUqUlGJi)T!p)BNQO#CypHu9Kf5{HJ%BnP`>F zTfgy5n%B)k1)f?I3YMEU`scT(6^)~63c>c_tjITzHz2QKqgaxF=Qhpa$qX(PTnN00 z6QRn8!IwRnXH+XSr3uOiiq{L$J|h{thzKU_(Rv}8xs@IfsoO=92Rt)aG2ldC7Bt5w zneW6|R0^J5gZ3r86h4#@J(c)(_p70_`NPVpDMkubHt6P-2h4Vb2BWlL329HUz^@_` z(k)r0ERN!2ETXPj6L4gxzGdl;RYgUX5bhv*abSfOrKhqd9%9)#6kttL*?sAXG3b5R8y^04T5f?pQ+y|Ydk}-B$kC2QwYW6GZJWS;RfRU+{g>J zN7Xsvi;)}_J5$iRHas6Wr$rh8{i_RbAdDmiAEBV#00Y8OnmkP0$0 zr6sjaE9O2r#Sjs;&h&9cy;58|qBNMIQ#P-SoMDs0bYdA0^iLn}zii1;%y89wT_1@Y zmvMEKrUP!(4T*rUpl1-nv|Y(WR13EZb2ix*{* z3??SpFjf3Qr1lm;w;U&H4By>xoca+8@pbgOB+u6AajG`h2ky)YR-4w1d+VEoWP5`Wrnsoy##2JkB*cNyh2SDegjn0#oW9+agKD*XXFFxt5pM0UX`T1# zkIN=(2cF!inCS1?1bQSn5*0al=Ljdy@I)I5D)lQR*jW`5ielVgM|Qa0rybcDEsn1V z7@Ckkn6Q}}Lb6nch1NF}htH%J=-KnegRgdr9XDvz9DJ{r@fIvrdB&dXRm30?7$%%S zdALuZAR{pMl%1CEvJ5rZDPR{SgR?ERQ3D ztbS~sHb9C@;g&)s@1U&&$QMo)I0T4s-4#Nu6oT!M{{Ud zaOkP%!N&ktnOtZ@6Ip8MCBG@8A23~2XAZ>CiB)=hfuOPC=NmD@)Z;fo)G@;8;|eYZF;wlCKRTd5lU{Uu zuqEv9u>}ukyRKJzWT}i%*rNTk65TLM9iDLNVGJ$&HGfz{zGKA|csl8#7o^i-3&qOz zr#OmN#jHIdSb~N-@StdNug1*`Q`H#r)FmiMNnPU!cGK{C`SKXm@hLYZ7`YTAdH94x z9l-k5AK3_zJRm$?9~az%8vN4}?)i+fXV3wsV$<`nkKr61OqH8&cdI#H$cQy**=jC0KO?d$ z-!mq|IQs~_kW8$TRlJ6NJX_ifo)Wi=Zy$iWa4uO!&6_OVARirttqaOP$^<*S=JoJJ zELwK~y^DeVLQ2LTGMvg}{orb`hJsZxNAa~lis}%)3qV^MBS{-7C9WpYN%X3oJU$#d z{u4JlIXaD1n`FWgtrVJ{U=q0}XfwE)Us7JV?2caslDcyZqKQ){`dRurkZbrxQnzcn zdg=KLq}yFKudt7cLiM&(b2+{db&6O$W@R@kB4QeSETyq{++g-OxK5$jRdLN9wrk22 zv^%`9iQ0*<3^mcgx-G=As>8C%;W0;ERL^s#HC(-$DLb{hM-=bJRIU?w@I84=+*w(+ z)d^lz{#&bfK+7-DR^gvfXNLw=8BY!e?^tRRdoVKf0b(2#*@r!RB>>TC78n{sKYP$&mfI^Bmj|_PB7(ZKV=){JW5})#kXihpy*kfXSj{P zt2tixjLSh}mZ;+6@7~d}+nAmx({s%3QB&J*_i(xePd9PG&wj>()QYITC|a+HOHs`V zBcE#*qSOj6+-2InS09aSOO|47&DhGz)@tkQT)FUmOu*NXwy376%Bxk1SJq2ET{9Pb z#8vk0<{sT$fx;KJHRM9rRGE2xc06-ld94KB&2VNVW7_*o@MNT3Wz-%XvuM8IYAVYZ zexOvHj+q{{C^JWvM>fEEV0GH9Ez?TcX-T+@##2<%o!HjeWC*VrB*+;d2YYy>d*Ga) ztsT-hLK8Pb?RTNAHPOsXj==eKxMF2}CQ&*=={spzu&FgUX*L{}D(H+YuDDM2FW;by z*>owjG<|`%M&u_jIzuh-g88I-VCfL8CtBX2w86eQj$X}9D_VFuL2<(tP{S5D1r`*7 z&Ak92(Mj)l+7wH^98jJ!$?LMyc;?&B&cBG5L80>|6nDsrw^GY_)W$ekW!)+gnsgsx zu^IBSi=Lo(!Wz5%X=|@vES{E+d)%i|Ft`|jv}cjq4cg0qCw8XZnCgtumE0Ue!<%Nj z2a7(sf%`Q`d54yI!$vz~$KmWF<=P=ceS^ok`?Nm*su>Jl5*gAIFU)IPgk2iYM^bN0 zJ>E2XQ80ts5OZ1Nn3gAU4?>%JWI@@<&w7tVoA1<+F*Oh68LcWs)}~EW2v!=FR%o(7 zR7sHBkW>}JHj_9<;Uexf<9Z_7Ci+V9QqaGj9Hp4- z{9}V8Gw0_V%SAF?F7TWMl!O@tO(vOvA)yj2Z2CFM(%3izT1@cOt4|MO z%1O}rn*HSkob~pvZ4OBb(hoRzCv^Q?CA>*_>=T;|eeF=^wDBv6U(~396l;w)>AEc> z^Ny81$gnfQRc0Nj1`hOp_B$3x!a6B^>ZguTDIuW?Yh&R0M2$*{go1Qy$(E@97<-C@ zKYxT;1UJGh6*#Qm6!Qe?kZ$G z@MNaD2_zcw*{wo7-p18xjqZ$PRJ-#=o@T%6n5OwuU7JphAK+E_!JeS%eB=FXw|e5k z+d!ig{Oss(?$zg?U%DFdqz^bUb>=ojy3?QqlK-RgsrLF-$f#dR(41V z2)xPcYbs+&f5aMR$ZHC9!XH9eOUYP;4Sy`eEX(O`*U@MIe5WwFU(%&%Sksz%s4o^N3VtaA$pLK8VmYq8!LaNr7?$qabIU_lWp24WJ~$O-X( z_xuD}!O+Vw2zZSMd~yD!q(ZSqOatFAqV z{LWljuC$^wT+?hr3C}~bu20PKw@#QS#B8_9!-1vdCO5&{5Q zHky$H1E*n@DDUXg?1yxj9YosE4JCyE9mw{A>KMWeFBnTg=0v`-mf~GLJmDMpL1G@$ zkt=bf7y)@n~670JThXBIFc6Bk- zlWxhf7P8KUsGyRE(Wx(sbE>41InwWKi80i^-ipXl;TR?<>j*orub!dbJQC*RdhdH6 zf!fe`1jNZ9d)#xPE`XxRtL}NtCKGHrmJ+~nqyLqKju@6Ak2fMXy#6IT+s`w!!_bsMGv z8L6^g$>qM!8=6)lSFO1%ybM)dLI$ssuUjZWLkC$kAC#&oi%7NJLAM1+&x)An-o`JQ z#hadcAX$`Cg{nI5w5RgK8YD3Vb1*#NtQE}4UoWCTW6f<+Ye-oz!|%t2A?aha5|X8C zd#xOT5x){YiS#uwR!~I1JVg1ror@i z#=7pomJSi;8L@q)DdjZwpv|tKTp?({nyHelI~R2w9M{-OWl_-9VaQVc{FiZm-eT>Y z6yQJW1q@ml{!?xEn_JfZX-cQ0_19qk6D&#U1dXD}Jy%ytOFhTR3RDIgkHv~zSz)jA05y>HMq6tNBWJj5Anu8tb>SRUkyI1t)7x_jgP5M}luqbL z;MrHrsC*a6e74RMXw>BvIKA=V+3&zzwAievV+&vaq@FwkdK|Y!y{(=$+Vr7BVK%7A zrZX2{N^TXi8<^UozTsI?Jthi#NGc4!_}>@=Nsw`gOudCdOrOUQ zZYF>z!&rjFBWgHKsssZ|KliHa532ZW+zZw#sna9>#dg333W>c2P*5NMmloZB0;a5s zwY7+?iw%HL_!r&a?*m$ezwu~I+nt-&ED@;bw&}+@gzLy)Ovo>iNX-gDHzbd^%Fk$vJ1zN6T(3PkG&4O@&#`1LH>8Ur3qOEb>6J{B> zqLkB!{E2lILyOp`TAcY~0osQ*55kEVpL_t#LtIEXa@N?ct-#U%lTitL;0r_J)}{5Q zoUiFbeY6Bsn`A^Fn?~wBbf~3+Db2_X(JbQEkkH@*!#fK`=m^5fkC22(d>nEQtk9=A zh(Bp}E3_@J3$x}qLB0l^DC3dJ20u8b@|U?>rimCSF<>%%bo>n*_^|r(yTO?A-37iT zfI*9^b%eh|ID{Dotmm(3omTKSSM|^xZ*TK0`f^<((Xq`GDDBxogcl0K!q*sss*a=g zbOt!dW+uK{hIZw>BG7WT+EiwYJ(W&xte;`R4|~qYsy9vW3Wl?PVI|H}w{#yp+nGLh z9lW{o=s4!DgO%tR`8_Y<+tVH9RVnCDnqhd>ZvTm~^>9WwSi5R*jH zPKsjwc`Cj2x-cB|vnGn!<2c;HY$U?<^;igh?W_24T_@}$Ak{Uc^~w7w>uUWj)5&-1 z%ku#{gCjf+-l%1_UxntH^sqM%9%vUwd+$$N2*_5l2#H96Z~><#qC;l;`nHtlfDAoQ z%b-9KeKW861Hmvuj5O(O=*5G#A?@_`^ktb|*=$>xTHaZa!aOxJ%PgA!A`IiTuKKL5^syUa#B9b0XI@+SVx^OW3(jRD8?*Ux7@Gd=sKxsz6r5dUf(2t# zt#E@r(z0ua%xhBIL&ZFWPn-_J|#04i9fEPaD3w?x5l$y0l22TP)Zo+&cbl--M#(MY@Kzg<5;E z`DC6y!PcQL0dI&U)8AhuzH6rpcwvC|gAjt}N@Vc(1C&V7+mwA*_`SpdrIp6e&Z56X z&nN{IRxzWiar|-BtBNgLw1VTGV^l|7`62LUFGVn%*iw0O^y#?XR6Ks)NrFdRAu8;z zz-2_4aTJaauBFNEr`W(!JFYirkBu)OTsp;_Z*m4uQ_ImiqPXcI0rf37nM?8?_jF<; z?9mg5_~W`?UJxTE7)>)^+=Sx-awK!Dpx>-{&=Z8v@M>;^<+B=VjE$;skFotOx_@Gw z=wF-2-C>DV`fK-yywVT^VpI`F(NxVQ8$iOx@_!$H29n?@TC0v3T2k+A-haTg-KJ!E zMr6N1W`qlI3dvCE_9#<;Q=w4)<);RXXbD5nhn$i716K5%ZEAKL&XDbf@rAQ=Dtp_z zS;7Y)nwg!*E++apmyZe zkcWG{kWq2)-O52O_DW?f*>5245xi8&1@+`!jL2b6cO0(+#?48-NOE%?L`nPD3Un)P zzu?0=63m1Vqq?C&tYizG!G0x=wDb?q7JTi^&(>hIYe|K3DE8{P7KOdVygyix=`6Nrbs~F>Sk?2- zl9)QA%Z-*Dx_hu#b_u02SbDU@mdLnl(2XJ`l~{JjhxG0xk$g!fR>s*Ef|z)ly@Zi# zfwK!OLVL2QS92WahnZMcj!pwYZ^!Y1ZBgy4QEi+<$}Qd^N`UmE%CltM#;nn$hWTUG zQzFrZ`YKjTcrk8tCXYE9t0hJU;Q5vcyDAIKS^pK$qFN#AKgJFeh9pR+M74q>s_ICo zLuMCq1U$*7PZ(p4fm<{Yg7qY4_0v7;*pR_wXIlsGJ#3fkOKZXSlBLMVr$0wYF5iSd$Z zc~7KW1Cgcu$gGvkY?O=H%FdXGc};l~nw!WmqeN;=sxjr#95M{ODbQdsC5SCaCJS#` zX2HKhQ#VJ5vJNY&L~#;?1Ivwc`U7(jnW7|o&x$D&wTi}s!j281BaZ5%ub8NnlQr*oZs(k#8`D(ZLXEya zBi5g+9S^V_I z0PdYsNzWCmCY{{q5`+XdOnLClZ(p+>R@Ijn!pa|AXTmB+$egb~q}|fP40ppGMfDOa zax|hilpQ)p(8?N5$=~H?1a5SqA!rRy3^lG;LpwcT+!cL#1xU&GUz+yCfsCv{(J5G9`sInPq!oFxCE1E*W1XN+(Yd ziXAeiuM1+RVBduZvHmP2X18TP>c^;KwTcj)kR`5TL197;wJthO8Oh3awjF?Oix5^b zYS>r@_T4oV^pN7ivAxoz5e*o3i3#l*R5}}WaS^wlVcAE@FFrmh9v)C zJ^F{6pC+=YxyY5Ira#XK>}$k*H1!*mV-Dh#v`hM|K@KW>_*YOah2{JC`W^XTdr=;; z&~{?Xyp3|Iv*9{S;clpXwMXI#GNWJ-1vq@PSu{>3Qh0=%2fFY0G2Let!=TkSjW%I{ ztHq{G1!j%row6cr4XcDgg@e;H!^})moUj2T1C+L|K*bH5QVuqJZtXmG5E!!oA)S$= zdcIW3Ful1rx+%mHbrGtYV--p&xeB)*jj*l;MJi?bcqJMy2i} zC}M%2q6ur7h*aU0q97foN}A}$+b24q~DzcD>%G+h4=t)S9D6>)<}(IyGB>Fkw<{cjVF4W?5JVngMZ;Mz%0GmqwsNQm z#yJzBmr8^LWDE|tRml1-pkds@Dk)Ts53yXTAwN%p~o)iG--{nYMZ9ew47M&d?iF$G;L! zb{*ZDa6qg}C}(BAqBz2gD}8LDF(+X@MCYm{qxgv}y9(xQ8uW_k=b^baWZyR4Su>+Y zYBL+X+7P?NNKI5CZn-KJ>Galk-Y?l*aQpfrh8@z*HBBjXua-{mBv9wYAcb_wap^2x zJ*@B(xWFY>xce`e#X=?Za_R<8-kG|A$V*$IN^kEr`4Fq^RoYvHkjzEzF)|g|shu9R zMOvZmhIU-!R0tXng0xM9YVjHn{KjTwl#HTEMPm;Hxo1+(6`$LZ z82WvCt#s1`8?DbHhIYvu3q9Zv9N4k56EX87>XlN(M7}iFjm$E|4Bn7AnW4&lCgKG5 zVaPO*Mb1<`An_uUcsd|b@Us=YsX*ruNgptIIhYt-22T5fastQ$;0TYr&HNrIE>i70 z!w#Zbmt~IHxlC@Y5=WZ9-2xOgTz6WM53f6L*t;`iI-QykqoeFMXP*Lcw{Qn!pyO*{ zc^v^M?S%(w)wwH0Dc|%Q@b;jV1VK$3=GkcTfS)QtTQ8+<^TiA;iZCi7hTBN<#PXqw zo%+dC-=jeb59f=hOK}#Rw4|WL0_5Nj03U;e^^FomZF6Nu%-31rjtT`LuHbqT;gc0L zR4JeG#ibZHr1ZWxPN+2_4fG;VVtVQ9Cr{z|6VbMSko5wIQJ_MJUPU_;+=s4>U-|tc zMePgKooNjT8u?yzqI(o_mrxj6(F(Ym5pKV>L0WY|W5wXNPZZ-D?+LQn2KnJ<``yuJ zi0?~2Zty0!ZXUs9RkPQ-TFzx0n?Y~{#J2YdEEc13q<=#_n(d>-zk~3C-ySIvPUeTQ zWEag9T4wu_hU4WAC+7X)`UX`i9Df3d!vwE~G8>=b#2;RKY#{|*HK<;|hl-KoKWGJwNG3bVMtQNAOdj)a^`QHI+9CuK=jpY}P${1TJ$!Y`vS!)np`u#KZ|&DSARr$=e}drpIoo}?EQ|#9nd3* zRsHMtba5d|5*CA|Ecy&oiYMu09<@1JW!~UI$d7Uh;7Y>ZX(j1trO}%D&y5TliTouh zgly=FMN0I%zfo&vmF_DX;Zuqvo$$ZN|_C~(({rs)0ykYm|7vAxx;XP(ZX3Djlm#HkPBT4_mxXl6zHxIoR z^2AyFgmgiTpD=bt?Sxb-7~J}8Q3V{Vv}IFcmq)13LWHj8bI}5q4D?MZ16WxR8K+>B zIFrhcHs1aZ%EIxW=uga$f$?rpu>>F&NmSJZ1!0k_Jl!I-gt5ehXca#IJ<_zic{<2k zbQ|U%8Sgt4>15Yj+IK2${+B7@E=sl&4n}~ zPnjr;8Xw5&w@F`1pf+^d?PisXusbBd)lgqL-~I@(mX~cd0c&P#xe8HY zWw@kbL5|8>oRSVbiD8`;#fATmuys>^UE{l;0-$xIXWTJE|L_b=kPKMz%2|Q#o89?YkcX4Nods^yKc6vz|Tb* zU&iAnfHb9RXtpuXk~*Gk)_P*z$pjuP6j%~m`rhIU1#H2Tirm8@k}3YOQkTPS@!sFV z3}xJc`<_nzj`HhvW!zG<6Aex5(X*DR-79I?l}9GcOYM@HUF;-R0BIW4{5>RAQ9tjl z(!7M0V5<3tp6~vQnaed$;1i`p z)OJoV<}l7jEEuLF+0J^S;g#G=;qdGiTX!Hk*kteG!#X7b&4Gr`*d%x{;2W&ha+Ryb zVfTfASa-m3Lq4K5P(#@u(>BHf3+&8UlUr4XiCLeJx<7_!EYvM@>@&M+L%mQ@2ldtwQkPrp(dY2OH7qd1Ax z^ANYL$;Rp;+hoyE8dF@Pc}!i^)pWte)fV7@P#bK6IPfmXJsqNA}dQJs4lX6JXNx4RjDCD4@hH#yrs&3H}EO7U{B#(t= zk$z%{?4-9LZha2))lW&T8o~XYyd6WWoYP(%r92nF{5dsWnUmT@ZrfSCVQ(XDx8ihI za~a-#x8YBJYk7gJ_+|Am0A7* zAHj|w?E}&`&_0GuAhG@z0>Dk*qynkH{GIoxvgd-5{4!Bgi8g@V=U`iZuE1-cGBSJ) zBa5vIRYW!s&SK~p+EYgPxv?THU);8CQhMPwxd0fMhEfp@UMUpzO9)ToSpMgZk33IL z6i@%PHOo|Op;`1m5oEaCFgFVZ5Dc=C<4Qv0N{i-chdd9Ov1GtgO1oS9LHUM_5~Ic9 z(wa8l+ct4hnfU4f8g2FJ#RStj2l+1s2}>ROmy0v0=sJu|@LQ*XTOPK9Nak3ZywMR> zg;(Xfd+&j*%Ml@$S)&n=@>g8-;paJR?-*+V(oU?_Gd=H!tfOIo=lBOiUeVzfH}^=L zoaWaUKQAhLPSE0S4?b$NxYn^$EmL;$m|+{`TDP#T-rqeG>%A|(n z4(=|k0oBvzWLn7D`>D%#M7-uOFB;YTc@{Ar08U12=ACGInV6|QH_ptEWSxxbl zs%#)Y&9(Efu$dim(?kt&wkXE-U4FfoQ64h=defpjw&@G*2EqG+wK}@~6SgfV@Xn(( zeLZjW!LJP0jz@As1hVL@^h4d^6+xKj&(=64d%$Ds5MiB>RXUwH=%!Kq3THl-(@KYH z^?gs@!WYF-bjkXekrS}VoJX*nAK&FJH6z&3@~+TAAeCXh=@MJ#p2xl?Hi(YPodB_Q zIAneh&`}D+-)vgvTrv;*HrCI}}M`tx&8bo<%g z|BvRye~c`D4mQq4ie^?u|FHM}1AOqG=NpCpaFB~%PfH2#3Blijr)&LXfqY01mLyji z7lulbf|gA>N{nG%-`>b6d8%WEk{77t?IZgY{H?pnDXxb&;!jt} z1#kDo>C)hN_lYJLCntM3o~0|smDr@14n6CcI|aXPuO1+?SU|G{+!=K9Ch21s#iT&g3P?={iVlzb#maffxG`1JWIL`Bs!9 z!k(evDWk_CtPEPm`1Yf>I`GiUkin=&Y9C zroT0}-SZ*wgh7fGXd0t`8;eGCy)MYRbR&B&0WMD)U>aL2Sb*a5InU*oBl9 zFzIBP;g^st3R(~x!c+7z`gf43gA zus*pS>BPnHJ|ctP#dr#q?IJ?4RGB&j4v{jKfFd^0*J%PxE)^@YWNkLPE<`0&%JMBW zs+fn6MtDonqtB!t%VdM^}o|J}Ui!@n(-P6?v$iD_DpFYE> z_fLTOf&V`=2?gB@EX@oAoQ#eCOW8b9Nkc*5=f?D#JqCTwN0HjTK&T@yq@WO0j#`+3 zoF#`DmWCtK9Xj3iWRyKM9!NXuP1nRdHL6pmVjmywun>-|->67t{rE|=@$*R>Tu~Pi z+M=?v{z-lN>#4a<=kNC$Cm>sBx!#4K3p_XfLs08HPM_J~H2FMQpW5Lzcs}H(#|_~Y zv_9Xf!&rujv0N$?L4g1|U#b*mYlhkJ zABVZ8H{h~jspb=i5IulNMn&{GlY0uuqj1394m&b~t$08d6Y2Gbw^U?2YrJACN77cU zO8n-)Vf;hZpLWEQIXK^A3BZVLBB(n*|MD02-BkaIMoVAsYpOdj6O<`QiI zC^DO)V}2$azoS7SM#X&%ZnZSU_{)t=!rbrSA>9dSJ%wAkEC`RfbZX>g`7qnXfh{{v1azmxZk79#?%WG!S{!rN-^mXsM7= z-_iA$pdPXu4#%kVQ()$HkQtI%k7oxA)dkLn98CmwWQM?g)1f3Z9ryy*7Ek~NOE6PD z#uSCvq_b+NvSTe;3EhMb=~6MbQk$}3Ulnh2DJ1fJi=@(NWg)81`qo|$iyE=xh-w@21$DE9uz=~9 z9~=`Ei^Q7+B|pkX;h(CZZO?5wBnpy*aq1F^wXAX?Lcc4?;}L^Lt*Vv3KNhd7JQ`J2 zCU~j;EX1Tm34hN19qe?`+JM2@d%`otT~jE$M)=$4lhYNF1NjcLsh+=7=aUsBQYj#5 zOs0OeY}Q&GI{5cX%25%tNO-pFs6;sXn4Y4RmN9wV35(Km9q-~j;2Yuan_=}O;QA2* z?99RZ9$?P15yCT+x~q@6ixdIwhTzAy+T{g#+u;$Yt2g??Yb4h#Ap3Tu_zd|JeeZ<= z!YnK$tOAw2MnYMuV)?Lp0-uz;$JrYBt18>TV=jeQ<`f9rh786Dl7vQDJ&jG=ZlpXiJ|PH^bZRAw{TdTyl9zn<;eiCqAlQtu>gFM}8kdmrcBt(d~Z&QI%4Nm0_wYjm{^Y`cN(az!p z8i{XJ?Cfizqq)1MktH#A7bAm*u{$x%3`1j;)&gRY@(9UMW}N&83d2N9Xb46X|@86Dn%wdv2@y%mX4SH!oG&^cCkibEae!Cg) zH$xt1AfDnDk=Bf(}8z&co$kbeut{F>4OW{CIH`v;*q#*06Nwuck8XLh*PB-wE)nUZ^5Mp+C3yxRCm4gZFIJ zdmt4fi{boo^_dkK?AAndA?SHnP*VJ-N=sJyqlY9e2j zIOTR4yGj|E>SEFL@^@e0z!uA)T-%fif0!Qo(uPK2Gp-6YEHZaT+xH^}JFEu(2wQHh z+MDaUZb~qARI@y5_+Ob{VL2EvE{;!9jiZTS2aK@0 zu_Ds>CdaDPxk^9+RH_>OLL|ugh?Z=KUgESsAtb#w#7@3dG-pqZd%cLJyM`85cD(5X z1zZWI9q9R>aI3-cc)6?`e<#1RiMh`8wDI@E>x&E43?`XpdoLxjW9N}N1-1eznP`=E50phs8}P4(w;&ruMSGgOAdBO4|m!j^`z+$fk-NN zPk~y}aw_p1T?BYQlDUb#)J0MLm`Wg8*yND&{SK*KUk>aEYz70`>{8u<`Q%7|OyDao-aorc5Jc-h!;OzbHkyN;|72ydVU1D7-Ij==r~)GKp%(GA$`K6$ReFR&Z1sMsi;tP>UJSysMry+0Kax$zk! zl3e=bumEW1+^oe}Wlgx_g8ElZkGOO9#G)WXPWI0&n0%o@UH993?<~nR8Y#tWQEgqL z|9iSr?%G|8{}Hhfg#3SC9mN%7*?!YA{O?mqq_U(Xk_s|6-Iw%*-5#vn3vr;FgoU3! z(jCd}b<7exJ_&(uz&3Ff8xT@-?J%EDl8uH?x0oU&VtHMTzETcjNo82uY2F`JB{Z$Z zb?0U2MVzxvCQ>^@Kg`okhii}HO_yWuto!+So33Cen3la^$crPhXgrVEW8cr?w|eaH zTV?jA-0f(9i)RCPL24Y`)0_Z32qHvSaW?ARkbr!|C~-NG2nqD~n1md0bQ9~aVu;_x z^^O_ENId8~Qjh`m>dGpS{50wFlMi1)%|0s>@Db^!8HGia{EH(NS$`|SyQ{mMN@e&M z7cy9KWX%ClrU$&K%8L~Mjfm_3u0^;jHPS&eV_EzGuUb-xt&OU)mYxpCL>n)BILv3l z<}9LSJ1IA1-0fzqq)*s=O{-I-2NxnZe&-HCGcDS4{m#X}xMN5<*eEuE-;md*p&`<+Rp7K&N2oJ8H+?l$$S2xer{w z-``hnYOyvmsZfos!WiXYD%L>msA7T2gujuauXhX=n-P^UGfzq)oory~^-b{zd#Nhm z5T1Zwl9hTc$SNvnaacnajLXO$m~={p$bYr-C4p*3z@~Fj)jjpw7N9MdoJYCve@KwGFQ(Y#8)bmQ6cW@&I8s_;_)OCTzeoA%S zQUvLz!*eULkt8aS3rNQA{xv|&%PVsilnt`#Mz``!z3cWhAXl3$#N)H>py;PUQ-DJ& zo}~?tm-PZuRZ4vN0VrJc7EzZCTkn4OoZ3(k)<`Ypr&%_!ee_7=Najec$b06hnU<=N z%tIH39AFG*DimmL36g$Pl7X4rj)9p1a_Gk~!XPCH6v0YFV{ocPXp}L1(CoT`dakyH z4xhrNXhhCSxOc%Xx}E4COeodg$T07(NO`#&ODQOj^fd6W6Gb4{>c`B|#%b6|Ci4fa z4fykZyE~TZGr7Vzlf%AVKA0*1jWRoUeI97OpwZR!KC~R_EoXj4y$6 za03*Znbe9jgP@fO@Fgsos!^017y(Z{=R@gl_5;NS;`#d5y=)pI@ z!M8+FJ0{qJ)d?-z^kKX)13EJ|tV6eSBzF{!yS)$yegvrVyeQ*(VT&Unh`)w`$a0A?)VwJbCt`V{W zNS@}&_e#L>bblUTDsOUyu|=@N5i_ClaB#@Urn?3})$ikZlV`;L_;jEb(OCydxv&}# ziSyGwn@ID|k(!h1Nov$2Y6KNnt;l#?qHO=cR{0~T90rCwsT@|?0~=O4AEE)Fh3&$C z3|HY8r%S+*iLg;9U5;Kp)U+TvV(VRzlBz{Qmd;JkLf z-KR;^B`cTj>-?O>C6;s}^Sa!4m&KZhw(ef6S^8HHA6p_1Y6x;h8m(=m;o95%lA5p! zTw~Z^dTX3Qp+zKs+_kpIN09hYV%$Dv+0sH8j8-G|{;ox1u7-3_>6K}hw`tbt-G;*k z(`51VpdwjZl8t(qr`O?%yLMalLwj0JA34^L2AnFe4462vmp6ImrE+Ig`=*D^_max9 z)MnWwXVz)G&+7vlFjIMKEK2v8Kb>}=5?Tv8E~f(C1EH;j<*y2NX-*Tg@B{8;78U%p z1C4a z3x#^buc#u4(zF#<&#!cq;&9j%;*BN^^lSVPQjFkLpEFrvLG%X46NO=BQCpF-`4dL- zY0`{!lcjxssmBq`hPsbLr0!H5Hg=b9IeMxOttRwvC+KJ55;BO#z^~an5+oO#Un^0# zj+xNlQ@7#W-F$7aVzUuG8Gd!~vr7`;OPdB2sC9@-pZ46KZXHojB)2CB=Lv9`h_T0x ze)*|l#jA`e#%&Ufe)?R9fX$G^e_!q3%t5dZYpwByrtFv*diN`z67J4wGIIPHF?66pYk3l++W~_{ zQXMA7WqOx3ZX5g&(?tWR&<|#9ckSB-czy(_|4u8Xj9)tmSeG2@d4It#N#nPq6kF9* zVxk_wj#6F5R^ZZQP=2A47*|RvjsGB(Rcnel8D>GSO$5>z&s@%`h7b4Pb%kU2f};Sz z1zi*U{`IeaIQU4-na9s|dE#g4W&EH1a6ua<>wk!B{|8|uQDNMAo)4Kjp3ONf?Ey!^ zwV^POBYMbd7SO7`G)xSIucRcTFdcSOaVQEKOqJ-Crb1Pb5?}QOz!Q0IY5>Ly7$7~B z)8&f$XR1xZ? zYEq6~Gni_80hpjyKt%Iib*vrtGMQ`_PKZrbb6#a3fxAV;sjnbg1>FhXkh*AanXYTZ zW!zxOa{2`$pzOVh2tx}Vn=uZ!#_Jv7oy?s;2I+C7Eje`rbz*@&WMKx4wr@c#lC9gE zcc4IS$0M(m$-p}2CKIgg>?*4)wIo>w?-AoXb27UeRVW#5x$TN6C3{5Hlq!}prhFvmLC^nXN#s(Zfga?^${PD< zs!QAMXFg~K7{R8X5yl)W;HngKESuX7o3};|E2PsEMING;vPg5*h2{8cLtzwj#pefG@$b4^V44B zc?w!kvX=%(+w=nuqVAn6X+<(Es>2 z>()-1O8pRA3Vy=*M}p}8)F0xvwKcN-{~a~GV%TMWIC23d4(t%EY=8j)`2Zv!ExGx5 z;CUfAAwvAkE9HZ+w`q+?q1__AKfX5vS<4J6h)pZ9OH=8$>Ce&2tOs^sKv3LJ@6ae$ zZ7NxKP?NR`coZ~Nxc0~LD_wENNSu(|oL=4N8?l;UZ1H$cVBcpL=23JlGQ31Vp1if> z99?0+f~!i&dgOq~yN1FyV&bPD_H0P}mU}c|-Mg~Pox;0FJo`=4KxWYf(i{?&B80f+ zl@Ba%n!K;$N?W{2L+upbQMlFWH_OzC0=YzAc|{C@HsYFZPm4OFm$dcS7G{g&8jYJe z8_c)nrng*=4IzwzXU|!=9Lfrp;O3de=VpTf*(9jYnSni0Ju`1ItzIeMWV8(Q2QeAy zz8CVpLWC2bX%b+l9F%K~RRuR|e2es;&V#U4m^TF0ZLv6m+E3&F`*Anf9eMv7+vJ~z zxT|>3GyBOWU_WCa&cAzzAHy`0|F!Fj1oqR=pIbVc8=$;_V09~4Ac02cW2Iyk^7zl~xY$;ehaT-N&)T_Us@mnj%L6|Y&9_FwhH^U}m zAwQ{0A~uxq`AHf!zzk1tHoJ2CtmQ_8Bj4j0T_*OR!Aiww+9X;~IxwXS&SiPx7h@Gx z*5wBGQfS=)7=xjVfbbHxDCZGZftymIULnUQx3r{6D78ervm#`cR9ozOmU z+M`&R6I#Lg(s(qCpUkiS7(6g>k}FxtMOGj{j*#YU6(4LnET z?6KG7Z)(G2Z%V^xHRWzn!=T+2J!zHePEZu21EWAdg2IGtK_n^1RF(Dgg?rH`DOHtb zed{TyS16})<8%Efc}`S3<&-^Vo~!pzcH8%P*Mh7SHf6M*UDclC&%~PYhAoSUt5r3` zXimXTQKc?iCQmJGR#Xl>Q<5Pz=L+!x(LDnT`j;)2A2i}a^PV2IzckU$VSPoq+; zXY6J#q-X6fAD3Q0t7nu_GrO|r=rdqi{}TE+YK*$-nT1;Ww)O(4nw*H@|60iYpc!t! znJ03fDe~ywRRlMgqws94LRucQOhx_{W7h0OuT z%mXn)MuP#Tq#B?LEituB(AwlS#_77alob!wTl$Rx1CD`z~jOq@-AJ+g>Pr<{LJgKhA*`+ek%Gq9R zh=yv=we*1K4ApjCp?9)5Z;`d`n5XK3&-8_>C$;m2!4phvLeL_N zV>9>Csk0~D|Eur$Cr7!C6R~ps6bjg%JoWE$l%AW7ljDEV;Qna+qj=9fpX6N&sEm9I z1cD4DpaQZl7)tjeQSv*mAOK8f#F5jwc=gJ%2x#puNnFWoFWycxksa zx5*Uy<+RTBU;Id#4%$4QMXs!a+lCMpE-L(JdxZ0qkhWuX%cGh^!9ap*=CsFn<1U+kEkj+Hpo=Q#0=MxP+G;!|L-R5sbYmQhkR!8hng;}% zcfvgd+UMxjq**WKiIggAdTI^{kKb^u>nKgt9hq5|H@O@v4~9>jb6(cyTM5-RFalHBMLqBq3ub^d}~X4#rGFfw!r zz45?tcwan9(DwTxc+E-5W1FKuS_MH{9G=fgOF3A3igXv!0Zu#azhI^sz1^em9mV$P z8^Y#Dbd?;L$&Ajp#asVY5^*x$r&?iWp-4EH80sh4$eWiyrH@|c3)+Q6J(;piCP#{^ zL=bOFcw-i+^$H}+l#}~=jo8NSSG2-b=MIwECbabpXL!jGXUN;r-$FaMg$H1V8ci2p zGVsnMe8g@^^to!Hk1F z?e??I)bsbL%D3kmM%rw+i-IZuw{I?TT2AwxI`V>?qQ7FlEhI?-68#_3z^s9gwCEBf zrcn9Dnm;x2W`dxii%t1K=8&}J;t{3w1{7RDx5&+SDu%KpyW)+Wl%d6ofhLHqzkT;1 zGQ@svLM^4y>ntieXC0Rb_U^)T2}V;5lC04OcU!YsfDDp&iGZgcAv{ILQk#^ApjyK< z5?mHe<3E&it9tSoo_K>|gO#Y=sQV&PoMGpt6Xn^2sGhRa@>n==Q`TN1 z4+0HPZLKOU(2cOa4Xjs7L^w87O2x{_Gkb~V5~{39HJxzfP~$`zt9LLB#=@$2PO7j= zT7s-%OO@z?7>qdRuoCvn8xLyfDL0uYYK&1ew`dbz7(Wf>?7171=?kx3T-Rh^v68GY zqp5}^<}SMrq?KKqwPwp35ZMoB!&d2c>n9$qITzvcc3$~hF6D3J+#t3#c0+9tu7yWr z_X9WQAvJLam5X}^J(JFIu;ZgH%9nPlB1eqD&+~lZ5_Jcoh1=bLdAwYd19#_V1)Rj~inrzDyX4i(#q$ zm{&vLm{tAeM=uC>T>&%@9TmGM7xT8@=gf|}i9swaJiaO{9YGyEYdp(|`6$W2RXB2G zvflHdHMbm3BsW1pthY%)RwEX!SY#|2eIiERxV~4P&NK>3!-hdw?+u<=5m~k7MX9&$ zCN`_GfL@+p@4(7mHiC#LyqR&nxd>`#{mnOf9s-^oJdX!zvHZ9w5KuV|pcs;T7D0*c9To zq)y$K8m}i6yI7xrnZ|wZ^}&_?VB74NV|^dNo3nc05_%v=zfb4CV(Y8H(wMl;1Yofj zL4f^s=s>xj2^L=QOK-`4)!m5D;6h^0dLQr*+i)x#@OK($=iVdXVZ&F>w$6XPh-%?} z&=M}32sdkMX}%T9v?0uaZvk=v?a@n9c)(e$5BVGVx@!6C>mZgP=;;?;FXkvqn0k4% z#C(s~U`x$#YsA6sXT;WLf?ny+MC8~6*bkj9EW znJ!j0T+u5&cA%I!yESv-<%zm&I_2>zClFL0kA?X2lfzaLe9I>iVaJuol@PGw*Ru}B z%f8t7=L#}_467fVi29b4*EI078Sr0RGdC*SkY99`z<+TdjOXEc+_seMRm*yGbgi4y z$ZAiR5o;j^(s(U*-kW5?B?W0{2c4Thniwx~P`!?>U5iue55tQMBsjzK8|n|Fk`8Sb ziIciSQ%gT=u3rJq-CNuq!LlGKzLI(Q8EE%yg1X12rE)4w5SJ~pU!JiBXLu^RG#G;S zpB1;^EVX$5c=66wXS+Q?jen>pPusYnch^UK_vn3$hP{U;J~gB13_Wv2O!xhAp1ZU9 zc*ZZU3XQ$e7rZ6fL^+_}{3KbM8>iKM4bWMw4MHVWher}OB^(r(J!4FTr72uZYwG~p z^zQ`te)Hk2Vw;Bvq*gWBE90ng9YJ|cYu?`aN5|Y}%*WtSXdFfvysJ?Zjnu>P!4F2z?*Z(v{6Q==*^FI?b{QpfN!oXC| z%-TWEg-+T{QBU8}NZQ8m2NuBaUtQ9FEQ0n$r3Ho3n-Y?4CC*27UU_n--Gd>-(rMz{oN&d zp!RmfNHd;GmM}(`PJQy;wmR2WOp>Sz;+2SHUJQ8diIXYbymgjcB& z#c_&gfbc6Ev7_VpI%fyN61xwtkPVGoTL^D%>=njaf?2{^E07FaNex$ zl^Mg4c-&=;$lOb!nAovXp>TH?u(i`%KwQm`)iEaL?q3fpcdR`FUo6K+)-d8XdX?7h z3VgTOkySE9jUcBcRdZ_HqE;&%TAXF38}IsD?k4eSqMA&dGcW0CRB+Owv%|s?zxC2= z7br@4Um&V-#e<4f`L%>$$ro=zyDqL^6$e#&fdnr$iczJ{y)N` zQhD$ERr8HJdVIy2;`%9M{F`qgo@#Z8TrSj*3jLsJ{w8clC7 z$_FClgPu0hP7_-5Eed#x(%a(oLz*ph@u%^n=aO=X^3%CAJTwoQsCwYXRMX54lr+$e zaf*of;G zLmN(Q*Q=C%f<=4Lb#Rs@UeWV|f;BV0o`puJs3reQ#7WU`rLA`nv6Y-2SZYcVDlzUX zhBsO!sSl=@MU)lM?5>m}Kzaxp2pv^j#=QI%uI==>f)oV9Fr=|c?8HHNa_PlM3;FQj z>wKIL9KWzfj$}}s9y9~NkqGskVoDY4Fu%bR%ZwZBzrG6LKIRF8O1aQ zTHBQ76p}5;keZ5IFu68whbaLW-L;|zd52mNJ#P3CJxF1a%^FRmMdT2QMa_X_-txhs zVKD=jo?WMDljl|mW(pz)xs$@&NoeLhQr<~X`q!l_X=#f=CGYSAZ$75g8YXg6)NKQl z^ddnnhrK5H73au_62RU8KdfMS*F7J4TRu=QcgCh4_73BSQDfR+`Hv6Zd9`*;!Tw4L770MBnU_yt6zR;o9fWkB^~0+AB3Bu5QHU9`0tpQLx*qJCd9 zl3y>({^ic|i%Pp^f5xjIf!rQuqm@}BtCvr(5c7SOma%yCZbAt7kC_}Xi{gWq_%2Ae zYF|J*cxOia>xDjvfeLO(8#X6D zmR1^Vhu9$HzQMBod}A{!UB*vMR4&7V6@e5RJmO`)n(#|!skuI8 zgKwQ8fF9)8Pv-chvc0S4`D#r}1T|C0MEtktoC`S$R6%TUyYL*j9LLoz;nhARuC5>G zF%1{-714sJt9Kw_SJCThMA4oDHNsn6`U0{V)Qr0?GlrR_ATrQRY$Y9nU zC*7)-z+Xw)c2`#Cv0s!2_~M}gGP7qWwF7%}y|8rpI)eJL>(KyVMCw=t~z z+k@*3L8i;X-)dWVEW2CJ|J_yipQ@zVu_Z(f_v@D^!T&{9{@rPsn*6Bsk>9l6H zYePg345j~N<$#uR9cC%SN!r?4# zt9dGVyGL(mFuG`lw_|tPwLN8-KU~y4g3-Py?*E#-*x*?Yf4{)@e81gzbAex~YqH@$(M*$k27_n2)x{rW+n zF`iYCj|dG9wtn=V^5nISg{wkXI;-0`WjZSZAhUK6PUg12$@OfhfJsHlSmG0}+m_Ue zD9qA?R6=AhuxG?Gzt982U6TC;DVHoAoRV;Ih2|KC1&iPlhuw+f$EDKt&Bp3h zyqS2WNDEjg>#9JBC|U~#pRkxH95VRw1Ljt46z7)+uY?HAG3{VQzCtf;{Y+Gdaci&kKFqf~ zV|LDr#VtkY5m~{E^$m>wjG{dg_lZ2@#72y)tvaeHAUrwUE7cLN|5{3_(3D+g*zre+ zFJehZxs;h0pedBX^T>W~Lz+!h-B_iaw1h@yNYdHdXl|8T(F9eft$ zl5&{|nM%>3Hc@iWft4ra+$<_sUZk1wK%@1a+?y$sqT*#;Le-5IhYb}8jn%dnOX0U3 zQfAdLYY)rqh4KdQB%t$f+8P_vnWf~bAT$YaPjktR(r zrx+KzlX_PzhdAcYkrKu=;0`DBR7_N2eS6{3Vq=%C*b-wT868awLP`o(bEUj&!n#4> z%pu1x_+F8XtErX4hAJ?ft*s1rd<6r7C{NZIcAc)RVYd=Sv=eR(WLg84q%vEp3q)(L zdXGe%cxSGz>^m=OI=aKu>S~j&a^5PzTz%x6G;6nQd;cD!Xb&w|y@YqpJvVkCvXcpK z5f*CDZU#>r+S1xBQAqR39gt$Aew|WlV@z+*lA6EOc(KAczKM$xjakss6B*7=S&Z#z z5NSSh#L^~Z)~0f3A*6|iCPtpcb?76NAVm_7v|c`iJzKct@stWOc}+bmhAMBlxY;c* zt7~_X(hsAXk->o@DkB1^nob;d)EX_Y)7+Eti85fT+GoJ{QF(^IUN%jZaoH2c;SC^j z2v}o@tvP(lSWnfOF#->^m7HOXsaq`5ZJ9ib4p-Pgq zs&^Xb!KKz{66cGS(Q42LaI|O;Eyg`tG^6VjJzi>%&G&GE{L?K1#0XudW7ZA*EMF`l z$Ps9&nh(TrG%(GoqqBAD2tRG^C|3L&wu5%dpDALhnBUK_87+JI@Qb@-9>HCV%zwx+ zB}LcZZ7-67YIG=tt9}hL&oE8fv^@g@@zQkg$A88y+Gsj$BB{;uko@03Vp z5jkPMy!At5tZTkjxdv9@(AqHEIWh{9K_9OSL}rnZ*$fc}iJHzw4V&tPRr95l%2QME zrPXv)v4~}zFw;hSH4{M7Q9-m7+_TSa2tMSseZLbNS!9i6p$4&vw{@0Z{bg0zd_J?s zV$VSyYhYKDQ-QIXZZHWLj+VjRQ%$0@a@Mny+Kv#R8Bo?(Mu+Ug8og9acz*m&x?fC5 zRqKrnAO(xlb(p{kl!v=B-VPovm^VBKBP*=C5c&0GICq0Rv~?l;Ie5 z8XrrC-fcyyow=to;2e-&&Et=IdmV~lDuV>eQaqedcmGkBpQAkQ8| zuzZLE9j)}XcRH=(5Zp!uplrI9BAU{z;_1FPX^C=?zIZP8yMU-DEBlg=-!L*A;b?D= zhwpbtE|Zv}FYTI#hUHUi5%OM?F!byhcj5fGJEvwKa2nMBXLaY~R9e%mo{jT>-42Y! z+ElSs`d4-imO;m1V&-(s!p<+cb;q$7MDCS%Sou%URPCune>G8Rd^(Rq({9Br!m_X0 zKPddNY3n8a9<%iY)q!LwA4Q`l#^0UMDBMMCT430f_Le9AjXC`028g7m2knVooSS^H zXv~3OabQ(pGJs`q2v<&s2w#}64Lv6GB{H8J5wFDHDoynbNyBqE8qR!$Ffpd@t5@Mb z1?L4US)6AtH>p!Df91_5)&3^`+X)MI|7*{eJQ}YnoF(`=0PqM5bXdH;ulKUL^O5U%nO^=1^3u# z<^&4qF?PU1jLWfwOthDW{f>7C5^0mDiQ!n0m(z#{SP~@LX@ma2cnnh9#@Et{@vDi$ z?B3vv@k}WiW7ik^&n5-8W?3VQGdt_?<>|fSgqds;v^7ss9G>;_&FOq^TAG#pYnwEr+Vs0XT4RXKEQB_0qKAHLFp>oI6=JyTNy=+j^6Mp= zb4L~~vb^8fqPhi92HSN3OTrC}S{#cz?zmKj4mwS4LvU?@XU$Y!JV!-V_r_3Lx^dBe217`FbY6A20QJf-* z8g8(JA1AaQNMfrDY~u~mvCpO*HO{b-4?lKen(n$Fk!u4sYNz?TXGOOb?-<-X$p$Kg?TZeMMiAW=^e&Cr4W5ut6T#LFr@<&%o#Mj9+izodxPM`&aoQprCXSVFNF~}A_il{ryEDQ3>OCz$XmjR?41oK_)kH0V=2bG*V z3?+|}iM^FYeJEZgSI2Lb z^|gvaFZk#NSd@hj^)?9BS$E3AurMyjzZ`%5#`AS6Njyja}+3=Bn8+gQgXe^RCfUvh6L>^=`O~DjT}hJ z=EWT-qj)|U);$6(U_drmgHyC%jE-#=Cs%|UXHC4<#E$M~T*tO(cIK7|)$O4cSC^UU zIWigovk(bOt!K=f7{^<$d1tHGaA|^}o@h2m5@-hT4lTtYHqN)aGU;zfEAqviL9p*n z|9r0UsZHDGFYe|Sclb%HXPQBW!o>Q1_(`TesYb=Mm39$(bZ5oA$A?$=O7qydDea#2 z-Xpv0(Tj`H8tt z*D%~3uoHgIkfpXV8gDeZI~dmAJJ_f#G&h_a;|M5=JUY0#BZR~xlG)N`zw+t5eW%XdU%{C|{v^LM7#EfJvsqev&}SZ5k$9&w|h)LS~Q)wHrPeNkx(^6b*e@%Dw@H zyW=-`!h}0~9~}(+`B$#_A08#WkEWOesD~gw-A!N3EDYhld5KV^o7jgLI+4M+@&|Wd zM@%y_x5fvZi#D`O=4CK6DqIo3 z#V)MDQLiO_k7M44d5;i@FALRc>Sai<%u=j+`malY|LC|omXAX^zBFK{FQM=Mn&kGM z9k+;!v5k|ku@lhT%JJVj?kr^)M;sAEZ^O}eRo&qxWE|9CiOg8S%6&+o7je|S5Gxd% zL8vA}eh|MnR*mXei%E-1%V1k!Nx7I@Unc5cheWb=zXS z?%%Kb)q1`F*oe|1rl@DS%%5SvFkl)mXcshC3$`5A5}jX|OU5n(n6(SvuM-@D$&SfR zXSJ)Fj=3)3l{r8GV(vSBzi2}G!S}tET>sS-zyR5KQrlz21-a?Jk+6uTQVMakxY;Kl z5CO99BOy8l*Ef7Vrv{RCSH&9})MnKZG)eh@O;0xX@mLh!liJ;gLakwGTKv9Vwwg#E zl<-dCMoQyMO}rtmJb3$797X=&AfFV6!J4d0+UcQ0Xy0$?HY?*t;9xmj>g3k^x7mQw z(v7TJCS6J}s!%4eGgx!`nTC49z*j9fzy6p2<9rUg4N)bjA*r;CS8qn}SDEVF(3pAx1tKsq>_kHjxW0`h7n$Jq>n7i-z zl$|F8CA>iv@tp%q(NuHE5oNN_MRG>a4P;t%1hpjKSpyeF$u-3}SB+pKC^9UF4vi|& zD{{iv{b2&5xAFryll6gE!!>=^0%$G~(Yk{o6}!lMmum9Gm`*CR{KyO>5GRy!@qy8} z$Y}GkAW1mOvt;3-&JE%ULSiXYl4qqqO$(hKper>rx61L{^^}ZBG`ISQ=3u(@BZFlO zGl!V4QCP{%r9YwzUldBD@rdtHhduAsv^EOv2u|)y*R-CJe1pJKe9@|1;pye!t0TEX zFkgSSs|YcuKCrv+o{DDep_XW-|k}r<>D8w!WmtTI+zu_;}CV26_mi|=NMKUHClRSGz`hBNYWbzbuPuV$_PV1XX4>#^#uX%Oxg z6OjM^<^Hd!&_Aa@LI1HUld@#(s#Ec6JD(6$k+CiHrkIIcMn>GiP|<(7-^D6~mc_{R zq;Gmo_@A+~!PvU7vURRknVFtfX*_Rl)6;sTJ7DZ2Kin|)!106JA`e6R6R@+FYJ?y! z)X^sK`Yfgo3WPI5ooEv#B3)wQooEy3h10xtKG=wGGc9?NRg1KrMa_-3k(adUp_}0$ z7o)Kxg$ha@WWAP9EFMw-`W0F&+{oYWoa6-=5;L-Tr|IB z(F5<(1$B~dlCb+s35-8i4~8Aw7F*~?{tgA+pLT zy+N40y>d)=-)6c;e|P*Ap@nOhBW6~UKCj)E^}DbAx6lU-^#k7G_@9w|lq+42C{K)z z-@)To%%YK7&uj=aJLRES?apru|2pBJ#iM*zg#F4Y#`^Y+^uPV(|4#Tx>h9X8%Xoi3 z^?||myy_%KjV3C}!uo7XLwj)!qOiGW3;OUZw4jk1E+07Sp57O7gu4`-UdX8JO2(Lrt5ZrEXL zhk0n@r_)-d`w*wFTDJYe?!mXrd;8o)yi)us!X#iK>}8QkU^~`@$hHji*9JW4Xw@DD z-Ex8;ZuG%y2H#}7dio%4iBJgGZ;@aK28Ut2HU=o9z2*i=sBg@@hI<ta^?UL#H!d z{DT1(n|bKn3dT z*nF(^D8PLzfEYeDyBIG;9`BNTKGq7A+o>;=LEF2}=%2p?uwN4V1hmY0-BElMx_#Mh zIUe6!i{1pJ-{%LqQU7+sy$=gvd|E;Y!%{I7CDI}@6-B-)+Jpl`&37U53j0tas_RBj z*AoYeX_<_FlZ_X~bBiy;9!jR%KO|_Ij6sW3)Ezizn2R^|*jQeh@y{)~?#=Y}d!sH> zsc)Q>F#9DyM{|$bH=~wzXw(Q-=5RW_?Bt>FO>SQLn=MNmC!)x4|K4@8jeSz=ZwD*V zfv84Nc6~kFZDBbg72R-~BiOQM-a14;Xg7CQAdQzLR{{j5$L5K$ERc%gG9=lPTeQ8> zl+ymRRpDuA%zu`q#y(u2 z(Io%YxM*ZfI>G#sMO_ z>4v`7MNNiXrxN{U?PGjasY4|zn=srm8n}k3c1RAsvwxpiGAY`Nzd1Xv^yOW;wm9r` zj4M8EAhl~-znj?5yHn4#bS(eH+yt}=#K5ZkFMNEdH^Ve9xBY#;lt=>NQ5lHrjM?4A zK@}Cx{r5eU;v}xgQy>T}L!E3I@D!ST34K+!P+v;c7Na7keP$m5NQdfi_Q3AfN)b1q z(ztjYQ-Wd>Qi5D8ROD44#AK92S8mThbCCBF%o3wY2(Ywr$EaaRLZ=3)+I(eub#ZFV zk8T-i?pkJgQF<&}3cKoL{whdY+Ci(T(==d&hqKCmM;5{iu+IzO#NXnR}Ib z#n}&2>Q!(;DoAT6Q$Mf^TaN17(2qcgPLZUgWJ5XD-00^$KU?8eGB}aBdt4WV87Ff< zym-58Pcst7kr}{LkS5?{r`Y{n*6#`-Po*%+dLp)kZr$k3Kab8zpSrWEs^WBb>FDRiQK$P)i(D!-lqO=ywOq#W0Z(gna#fSxhqJ;6 zw~lIAOdaff1L-E``nWq<&aB(Sj@VLE(Y$g@*DDtUjXkV(6H0>dLFda^k{sqM zfoGJVE&y(;R@tZZxv)q&hyxFt>HbZtrq_?CGDoaAW2xo`Ooy3dz@2z68p5oYV>$+V zM)GYQQPFu4#@tUaes(EkD_SdWQv(!yrN=~U6N4t)WL^CEiZK4AE?lIh&PPZ4ho{6P za`wb0F~bb=yQ4oV1w);LxgZ#h~p7X?)Ye6=9lxmVLv-f z-UqC05Dg7bC>H#BB%M`Ft#ru_Rx~)*pp9>${6)aVj@;LzedesE>~C4Kn=6@4GjE68 z6DzZu+pDV^8>OnT9U|x`4pecTDVr<5WOnNpOqf;^(5VBFkw?u9%TUAdU!+Iqwqjqg zfdL1Z`$0+&Z-z0tG-g0=5_4bTOp6L&O1%R4K5RKsiHlS%sFO&oW5R25=)L%7>du9d zmKXPYeFzKZNM1Rl*wwdeo_Zag5S8`jx4&4fO=w8PA)CY?j)0r8zM!M;(bQIlbo+w2 z@g4Exfnw?@DNq}UW6_UX!=jZ>&p-k1V7^T$xL5x+AqWCo&Qa*K zO%+mYY+DyC{!&ZEOnw>`l22j!RO@U2(4P;Cy6I1Wp-;HQm9D%teP5QO`s5&ARdm6O zb~YF<{ad=HrhE5V!_QcHtGwnE#`^_{ufqJX{B9NFEPYQRcCO#pi9d<&0vS$8wIU-6 z#v?aodNjpY`bd}K)Z(%2v5{7>+}qAwL4vy>sFcnp9WOtCssMlk_okVHLAu#%Cu8?0 zLNUWT_UkAT!)BfD88K7A-#c3KxOaI89WVwwVQOuvXR$rYYZ$Mmyo7)9Xm0;1=(*}2 zi(8X0w>&>{BrB>fJKRc-c%1wFo3WiEl(nTyT?pF201?VlcIP<9 zfCAm2d21#`Pi@aKLQPX<4)Ncd z&q6u;!vQHIR9Q?^Q*a+~;6g}dkHi#`f;=vgGv5*jJyUU(BX9rH0k?83EehvZbaT3~ zqx~ehG4w}sd8h^qPWpVu3Tj%2aSG;L@bEl5O&nSLh<6){=|TrhG5vkS`+W!`tox_8 zDsCT)VVv*C!KZbga|;^a8?ky2Fwzd>@kPZyp>)Vve9G&3pSzmFi(`@Y=bwVy&#~5_ za;$F9IzBAp8qOhIB@DWpKqk0)Ut~0$`I?vZ()KET7*Fhow*o2h+J=%Yq6p*RVue+` zW@qHt;t|&5XEBD1f$-wG;Ilf~vS^hQ6|uUOciJX4k*nb`v&KK#U-kreI!fF@Az6cC zu|6Wv_%Nr~W?3NNtfgoman^is#kF}keHQ6sXLT#;I_R5;gGc5I)O*RrcV~BVv}eV& zjosLTu$=7nV=M+_(#UoM| zb`>*ov{_5asGIgb=j69HwCUnoI$~hYln57{F;g4i0i2PFAD+mT5?Cb}dVx`1S4HjB zgUAiJ(3R>@?27B7tpq%?VJ5gc>yI0*nUFds01g{Lgno}q@lIG10@++;WYjO;r+1wGm|6m+OP)hR(+LdzYLSVp;^u z-i;3$MG+n)FLF*-SHt~&>!gcHdwu>!;eoL*X2la7kK4U?w(r6!s>yhED$**(> zS>vL5yxRF_89vYwm@ZOm_rcosr@1Ok*i}i`SaVuK8>{$$=<#&~E3ki~g*;-*Y+L&W z+9TP6Jev2iTsH+)FXI_r>A}5u!|o|ORY5+_i4%3mw2 zD#ZinmlLzFYr`8Hh`Zpcmlr6ver^*kqsnAv-Oj*AAyl*yfD-i2nHfL_d>k{`p&u4X z_wvOgNqVM{75uPWK<|VS*sm5jqmQb)@crLC$v?7-AOdWNcE5zEpQ!&2Yq|dvqyAlo zk_XxtTm5@$5~cQKr@4srx7(<`9%~2@y)Vx}8L&ZWiH=w!gdG7>J431-9}Mm(<3f>9 z)Xrn?A`~iyR$kiKu%%p{q*>e8L|G^JTTD*VGiU9s>%v&hv+VD)iOXnkVC?(RWX84k zwddb!uWkO1Jwv%%WYh3g?y3PER_&r)3%qvwDA~J4?x|ttMYCZZwhk#V$mLTvjxCfv zPiO5I9H$Nh4vQ8Ev8Z8}`e-dXOUP!4u}kcylhlAO&(M$!my&3NohmF&G}rSN!mHU@ z41zhk>OwEhz_){J@4I~;Jc3>^Hs0J_LvH+mVduLF5bfX!jQv@U%2>j{eoQD zBpA@h!>Q2#H)Vf!X?onH8worb(m!Z!ynz%4ZxVQNyGjl(PLMfJyY)m~^nugkMI?$t z7(y@ks4orC47=m;cW7{Wa9^Rqdo8N{%WPhNehx5d9`+oDn%sUDMJC4)X;{tL$SloP zz9nFZVsgD|ZkzXg@{}_lA5N2a*X0pB%aJC}rg}-zbOu%Vrb}J1RF{6!ysRdc-$-pA za)8N~xFlwfRlsNBJEWMofihOrtj&@&iXn0xc_=p5s%$kMY_!&x1v8N;(sU#|G;w@R z)wG48RXwnTF}UQZNXjvtbLcmbnuwBuQ-r)(z~wsQFb@S{Ept3)lhM-}cgKR(&`1&9 zRjWpbc&w~%BF1g%3}^aAC&mOB$a4{xcFLC3@ctC`-IY;BW}0&fY9BR@ob4maksOqI z**igv>q*?Tq$i%aE81!6vWZ!>PiDO}e>4iu#AGELVUAl>F}HRDd%H%;ktMizH zC%E}H^F*8FRRcJvhHS>NA$#?f3^BzzaTKd9XL5f!Cgp=Sup@$chpn5QUy|v$Nph)x z23f$t%4Gt<=m@I4IZ3?HH<>=ARRP|gtGeuvv{|AqOfNJp^cbAhdqOFfP3!%w2fMdPZ{ z=at`MM(wS{`dwkYFs3n2dg~opHhxmH{Wx3TcN~byGUbsNKV=lV1giBv!+H@2==;1~ zY1a$)Bfz~w3M}2AfC>yw|2UFSP=~b|0>k#P*}-@r6DciYKQUne_X#qkxH^~RbRplr zJnyYO4dyHuae#dX?_Rv&0iE7`2LEc1E&kCU@4LhKGTo@XPcD0$Rj}T;^2&|R=>{CA zD@wC~{*6_Aq0pVVVF3L*yeQOSk^*iNe*pRt8odHfHXW!8rNXB4)_j16xwCimG9&mNJ$V-PRJ8{!P~HMj8ubROyZJr@I%%l}sYm zBag=+OCBT~Iy;5d6qnJ-*4q4FES6Emxk^a zyA|r(8e~~a$9%+W^cZ#Ns<#?4pj4w2!ewXPsumMmSXAe7!Gn99%EcDxFa_VkWRe1W~Ag_`)FUC?%0;01O z+*KxVOcUo!oP~9jNr=H2LyuRT*;j-)9sP1T0 ze^AWnFyn>SXx<8=UY$oT``uG6&e%6pJHnM)RW=5hwdop_Fb)UY=o&d2Pv2(~>Hzfn z5(OBA%`IZ!UfgO1E2&bNJd1f&4cM|3RL1!VV=te6-4Xws!KL0 zMLNA3qyWnV3)EKCir*kGBng>%+DCB|?r^vfWoiii?Fn3;p#$) zo)1D_n;SnM-X%2NR3fKGB_%2+z~_lTKnnRyguu+H2J94I^>ehHu;Is-qtpi+5hxAuqplzt;qI zV^4?lSjq<_9B#tgOq%#z*I11&WbmPG6S7Ub@lIpm^fO?=DcGAblhyd->1W* zZabUI7pTkog;2JEXmK^^gAc>;R^TlL@`ub|AiD(SrXW3W{pbw)MRuSI;se^6!E1KX z&kp8ILqC86r9HJJj7Bqp_YeI}IsT7oYPO;Q9BYw@pS<;VA~svqd(9ZCGjH)K0H=~q#qW4Re9>|LG7y8nJuR12;fzPcjLHQ^ z9E;z7K{WNLoTC-b7Z+aXo5B!?0|G{!6Yq#_h{ofQ}G1iKV zWH37V7)z?@cH{`A`8kclH?E-LrjMIVurBEKORf|2Z2OpP@KP0C#iZkXNo zp@CJvR`1n3mPyuL7aiw=Rcz@g?y(9%(C_x9%-yCa6wxr^wA(>f72dlljFwAHRTX$> zfMtdtrw_WKaXHjLnX?!8Kw>D^1YM+fn@%66C|f+&zCd$&GB8g*oYAO3oPi)vCK;pu zK&9W&=7;lQzcW9auYiTD2oIi)`*Q&x#n#=QL>K9|>|D(>Ygx=Vo#p=Xq>{bGk$k=x zt$|y8tidru#*qikVaRXOYp^k9*PX@rg!mT^_JAh|N2w))z9r<(Wl)5td2NPy)?1Rb zs$&13Q%3}Ftei}4R~$Q85(N;}p|jOC+-u1mz88an^;CZC%SXB|Wc+rlc8 ziJWt!4yXN>(7X#>C7FWxvN#O^k!yPVLl?q{_iTeX4&ex5vjomsvCQ?Cp8Xlh?`^8e zTt~SSm>Kc^(qrAI^lf?<1{0H+|~)aWX)K_WYW+x1i{> z<8%A;%Z-Grmiz_!nD@76>>cHf@qd4RbC%ofeo_I~%$rvvmFb?o|X zchkTtCj9wN?e`Kdw;asv>tTo+!P_Sy0cZY;eym&jrI47H8wCOW;F$84K!hCBWd6hc z67QEtgq+7+NB+$F-FtrC(|!zPFNHxRpABNY;w1WU7+UpgM6L-8S{IvN)+5({Pb-EHkF zy_GkWrH&lTYxOG8`gk(a|Iv|j4y(RFm7R2ONzxT%Rhm<7*U&qzU7Cc**lQIKoHPQN zcl63Ms3f{JhO;juvO+(qSk0ErboVN1!PW3XK2Rq=~N)y}EpC8Q}wpD0+T-t8Wq-G=@dWv+lT9uv&!UZ~P-C;T z_t`fRY7`;%Q(GV+uye_*7pnoLwI$RfY}W&F!Zmju8+RN6;3Jpd2Z+X|zw z&Si#CAxtKm9d;>QN0Lp2R6|a>^Vpu3R8VI0GlQ{gPXlgV|MW5CK2Lw1Ev}R<2tJjh zN}k^ISlLUZfB7aexZh2eR~C69=&3RI<7DZ^`K#!MX(`)vafTkZy55C@Mr`Daj;q%h#|Nc<=;ulP?Cx-oGkmHZ$|LqT?^~nZ57E9jVFt(3>j>QX> zPnEv$0xL?J;kn{eY&^D)pB}ZkQWlc5+{m5Q@#pe>(_yTo`zHP@+dFi(>MagjH`=dv zS>E7YP$4w7TmqsSPju-N?aAib#y5F2Tc?`y(r^K@7n09`*s=?7uqgY2SZS^{;Hinb zYBlUY)cf=c%x`*{f|$E+Xywdrsye+((cVTi{3Z@tP22%IYfTW39RRziNb9t$UI`Y0 zjpk*!HdibDnQcB)oRe8&ku~F`*Sj^aC;SZQSA9F00~c_? zgl>x$oX@IVf|rtDzz+YmB#AZs_*!8^6Z80*$t5D3t+41|H|smjU;D+XV>4r(awG3$ zyRFe%BU*;4a%o`Axw?q)x;9@eC$*L?|3y=m%{sOO1q>G;+iV$CH96txvO2XgqdqB& z8sUHvXNFc1uE^o3Wu5O`V*Zrn-kpRh7M5*NAQPRF&3&L^T&X$MelEad$SFo!O8xNm z8g7%0R8>LfViU`ce|5DZPq()1vMnPz7Je!u6tj&Ik95q%MzNQ99QV5MM-~`MQ{tV5 zb_AA%az+~Zq@@BMwUxS2+7aa01YQsh)k4G0qp|ZMm@Y@CcC%;2#D*=lQ2oS&ZZhWL zbbtN2-9%yFP)3vJ1=rvO0e^3s_~PMfBHxyPg(k!tFJ%0N9U5N8`c(9t9b#5SdujA( zD;k@Wx3fqZ=kl6kC6lCKq0sm^YX?`BYI(!{pFRFM7O-Jl#!OT>sbLotb+9`#pp>Pl zbFNRT2srFG>JIZV^7;6wi?WO>zv_KLoc2>R4wp^O5%q~^nH4Y8>(~se85w`*Dp|aI z$6_FQhYciCFOx3(AsGcjhL7!OY=r~Wu}ae3;j;#s{WXq?O-#`_uhS>Q3{)=qxd_jp z*3SkjuDXQrI6k%Li!og9y_z6@9-`0W8&^yux0&H)irvF*sZ8^1A?thAg%wn1)#&Z&pP8F70hY?C@QvuR%2Zp@R8#KbeQc=w)AG+G5eimx zg7qlaIbs?ahU)#w?7KF7&Y6nOjJwMUPd|$GIm3Qj1%1Z)8$vP~V0rYALAnvxa>&v&#<< zw{#4t;jwZJ!81r5np$DC2~*I{>8qmJSi3??KJWZWE=Bl36W&sJc&2nIrCGJa;GV5e zTBFYbg5%EB7TRFQm6Ndd*E#->Ki@&XrVo^KJiu%Su;LdYks~(pA~t$H9NJ^PcgIP` zOB82L4t17l>tD~NtrLYrO2#x~a)SwgHs7<4lB7`ozC|b5P9!Pgr~m6hH9K0mfL!!j zhm!t=f4Hu}G1Z_Jjj3kgHCtx6u}J-dbR5rgF+rkBW=sZ+-7+09m=ih%VYM6e?*jRtrFXDV%K>c51+yAqu`6_5c z&8>{Zfi^}~|8!T%QhW1NI>h>$&7P9*kU00VmU00`OG1gLEe~%eb`A!0PF38zSN4{b zPew^LK0Y(CPk!Mv^S&;ly(KTBwA^J)##AeDv`XOe`GaS@YuZzGUOeF3RG=f}_>TYj z-X~{V;`8--+9nsh{U(MH|0hwX0VW$|U=2jHG+CNSUklu^2xIxaKO#oIk*`*<6n8f2 zs8YV0#_)U{f5HALVOPO^DvVBwFJ8n1Po-h)vs2JH;M23h@lZ!xwECBF-D z+Q?*AN>JUHDtVS3R7x-*S7V(Xeq(@5Gi)kib@%1ukso`SQ0FQs6+A~7k|(z$!(-u* z8B(ZCuQ3_0xYsO~B(5HDNsCUJ!k~vu)#&O=QITCX4k3q0=DK2jwCYx&O*gmU2q*N_ z#U(MNFpD|$XFcBu7T!7b)!re=Y(KwsKyCx z0%Bk7sR97R3H6X;sVef&$ee%l5i)`zXYl8brAB~$PGmv+P znQCOSV^NvW^lcVEkL+CyOF2?LxIcaW6y0P`uHEKy;aoe7;L>oZD!iU^j8aw^S)h@5 z#5HAxM^fB4sdEeuqlJKJ)r2R{TXU0d$4#U_Q%M<&yuTZ;x<(j+gEQs>r5>eOV}Ex0 z+3x-F3$dT+xxVr9L#XZPlTWLgj^}}U$M zCVGIaoCh@$s6`S#>^FOIZd(0har3$PB*)i1g(q#L0wDK-zeFtt@V1#r2ZyYt&c3U0 znSAK^w9DmtDyP<}B zO&zsudo5Z@n4`$)Jkygfubapx;x7}E(rJ?7vr5K9CgL;Wiuoxw$11lh=;-xj zHnfU}m$KC_9hO?-so-jV-)-!yBqljLHS>*CxZGVK!DSSvRByFbVJD82NgYaYi5()_ z!X8#=r0irL*3G$jDJUHlv6z{(zhB#h|irR*ly&H2jDUuT?=T-sp^?Hxm@EwzDg5oW3V z_i<5{D^ZRkBEARVv z=t?6yv{Su9WJb5dJfFDB2nzBqc!ba?wHfH}%!P7L2EE0cf z6tmrQ4L)ldLv>HadxcQF(Kp@Y0AWxZAhrOB->SK1j<|Axni^csdjI-xQyBub6u$2V1Lu8(jT!jWSB%+On$e!g@Zv%YqQQc?eM5O)eP+5-?dCNtB4K2M#&d#{<^*|rSMmGUVal?*k>Mn zQK<30i)%In#xYc|~I7=Ig zY$j-UKOPlmQqTSlcXcy}q3((gTfl++h>H-t+!x@^@PrLQC&C=dlOA{r5Y#Gciq69> z3mx|4O(G|-L6_Ep)xTj+5H74tHBGDSBT#Vgj^d`f7ne%92z^M9gvjq_+^#_e^(h3k zr$olA9;4wdl*5mUSTyQTnSOtLX<6rgMGX~cMpdoxW z)13dyTIjGOuCFQLhY zv&mQDHpT(6r8W?$vh#d~K zdoHcC#Qf%NzYSO;(tmXztV^^zx36Ew!Uz}4`Wk_xzU&~}h+$1jN9aq}vYuYF`W*9^ zPQAZBen8Zz_mQBa*t`A!A3JL)iFQYM24Y=_v8m{)W&7j(9c zd;l##Z9U62p8yDjvFDA+0P8LsXuQ`{pwT&DJRA{d4p166B1-ILO@auF0*+bU(QmuX zcM_JhGc*r&E#ON|jElx5t4%SeMvt(bHJt4*{-9$2)+nb6+#b5=o=XK?;9$zFB

{0o23%x0zG^lL-+)0hE&z$21eha>paa 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 LL+IIXJH`J1EdB>a diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5015481 --- /dev/null +++ b/pom.xml @@ -0,0 +1,88 @@ + + + 4.0.0 + jrimum.org + texgit + Projeto Texgit + 0.2.0-SNAPSHOT + Projeto open source de componentes de software para o domínio de negócios do Brasil. + http://www.jrimum.org/texgit + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + hudson + http://localhost:8080 + + + scm:svn:http://www.jrimum.org/svn/texgit + scm:svn:http://www.jrimum.org/svn/texgit + HEAD + http://www.jrimum.org/svn/texgit + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.0.2 + + 1.6 + 1.6 + UTF-8 + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + + + + + org.jrimum + utilix + 0.2.3-SNAPSHOT + + + + sun-jaxb + jaxb-api + 2.2 + + + sun-jaxb + jaxb-impl + 2.2 + + + + junit + junit + 4.8.1 + test + + + + + + JBoss Repository + http://repository.jboss.org/maven2/ + + + + \ No newline at end of file diff --git a/src/org/jrimum/texgit/FlatFile.java b/src/main/java/org/jrimum/texgit/FlatFile.java similarity index 100% rename from src/org/jrimum/texgit/FlatFile.java rename to src/main/java/org/jrimum/texgit/FlatFile.java diff --git a/src/org/jrimum/texgit/IFlatFile.java b/src/main/java/org/jrimum/texgit/IFlatFile.java similarity index 100% rename from src/org/jrimum/texgit/IFlatFile.java rename to src/main/java/org/jrimum/texgit/IFlatFile.java diff --git a/src/org/jrimum/texgit/IRecord.java b/src/main/java/org/jrimum/texgit/IRecord.java similarity index 100% rename from src/org/jrimum/texgit/IRecord.java rename to src/main/java/org/jrimum/texgit/IRecord.java diff --git a/src/org/jrimum/texgit/Record.java b/src/main/java/org/jrimum/texgit/Record.java similarity index 100% rename from src/org/jrimum/texgit/Record.java rename to src/main/java/org/jrimum/texgit/Record.java diff --git a/src/org/jrimum/texgit/Texgit.java b/src/main/java/org/jrimum/texgit/Texgit.java similarity index 95% rename from src/org/jrimum/texgit/Texgit.java rename to src/main/java/org/jrimum/texgit/Texgit.java index 120db7d..863c2d3 100644 --- a/src/org/jrimum/texgit/Texgit.java +++ b/src/main/java/org/jrimum/texgit/Texgit.java @@ -1,7 +1,7 @@ package org.jrimum.texgit; -import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.apache.commons.lang.StringUtils.isNotBlank; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.io.File; diff --git a/src/org/jrimum/texgit/TexgitException.java b/src/main/java/org/jrimum/texgit/TexgitException.java similarity index 100% rename from src/org/jrimum/texgit/TexgitException.java rename to src/main/java/org/jrimum/texgit/TexgitException.java diff --git a/src/org/jrimum/texgit/TextFileStream.java b/src/main/java/org/jrimum/texgit/TextFileStream.java similarity index 100% rename from src/org/jrimum/texgit/TextFileStream.java rename to src/main/java/org/jrimum/texgit/TextFileStream.java diff --git a/src/org/jrimum/texgit/engine/Builder4FixedField.java b/src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java similarity index 96% rename from src/org/jrimum/texgit/engine/Builder4FixedField.java rename to src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java index bcd6d12..2b1209a 100644 --- a/src/org/jrimum/texgit/engine/Builder4FixedField.java +++ b/src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java @@ -1,9 +1,9 @@ package org.jrimum.texgit.engine; -import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.apache.commons.lang.StringUtils.EMPTY; import static org.apache.commons.lang.StringUtils.countMatches; import static org.apache.commons.lang.StringUtils.isNotBlank; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.math.BigDecimal; import java.text.DateFormat; @@ -21,7 +21,6 @@ import org.jrimum.texgit.type.component.Filler; import org.jrimum.texgit.type.component.FixedField; import org.jrimum.texgit.type.component.Side; - import org.jrimum.utilix.DateUtil; class Builder4FixedField { diff --git a/src/org/jrimum/texgit/engine/Builder4FlatFile.java b/src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java similarity index 100% rename from src/org/jrimum/texgit/engine/Builder4FlatFile.java rename to src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java diff --git a/src/org/jrimum/texgit/engine/Builder4Record.java b/src/main/java/org/jrimum/texgit/engine/Builder4Record.java similarity index 100% rename from src/org/jrimum/texgit/engine/Builder4Record.java rename to src/main/java/org/jrimum/texgit/engine/Builder4Record.java diff --git a/src/org/jrimum/texgit/engine/Factory4Record.java b/src/main/java/org/jrimum/texgit/engine/Factory4Record.java similarity index 95% rename from src/org/jrimum/texgit/engine/Factory4Record.java rename to src/main/java/org/jrimum/texgit/engine/Factory4Record.java index c42f84d..01bb908 100644 --- a/src/org/jrimum/texgit/engine/Factory4Record.java +++ b/src/main/java/org/jrimum/texgit/engine/Factory4Record.java @@ -1,7 +1,7 @@ package org.jrimum.texgit.engine; -import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.apache.commons.lang.StringUtils.isNotBlank; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.util.HashMap; import java.util.List; @@ -56,7 +56,6 @@ private void loadInnerRecords(Map name_record, } - @Override public Record create(String name) { Record record = null; diff --git a/src/org/jrimum/texgit/engine/TGLanguageException.java b/src/main/java/org/jrimum/texgit/engine/TGLanguageException.java similarity index 100% rename from src/org/jrimum/texgit/engine/TGLanguageException.java rename to src/main/java/org/jrimum/texgit/engine/TGLanguageException.java diff --git a/src/org/jrimum/texgit/engine/TGManager.java b/src/main/java/org/jrimum/texgit/engine/TGManager.java similarity index 100% rename from src/org/jrimum/texgit/engine/TGManager.java rename to src/main/java/org/jrimum/texgit/engine/TGManager.java diff --git a/src/org/jrimum/texgit/engine/TGSchemaValidator.java b/src/main/java/org/jrimum/texgit/engine/TGSchemaValidator.java similarity index 94% rename from src/org/jrimum/texgit/engine/TGSchemaValidator.java rename to src/main/java/org/jrimum/texgit/engine/TGSchemaValidator.java index 809a0a4..dd8c0e2 100644 --- a/src/org/jrimum/texgit/engine/TGSchemaValidator.java +++ b/src/main/java/org/jrimum/texgit/engine/TGSchemaValidator.java @@ -6,7 +6,6 @@ class TGSchemaValidator implements ValidationEventHandler { - @Override public boolean handleEvent(ValidationEvent event) { boolean handled = false; diff --git a/src/org/jrimum/texgit/engine/TGXMLReader.java b/src/main/java/org/jrimum/texgit/engine/TGXMLReader.java similarity index 95% rename from src/org/jrimum/texgit/engine/TGXMLReader.java rename to src/main/java/org/jrimum/texgit/engine/TGXMLReader.java index 711a721..b28141a 100644 --- a/src/org/jrimum/texgit/engine/TGXMLReader.java +++ b/src/main/java/org/jrimum/texgit/engine/TGXMLReader.java @@ -1,7 +1,7 @@ package org.jrimum.texgit.engine; -import static org.jrimum.utilix.ObjectUtil.isNotNull; import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.io.File; import java.io.FileInputStream; diff --git a/src/org/jrimum/texgit/language/EnumFormats.java b/src/main/java/org/jrimum/texgit/language/EnumFormats.java similarity index 100% rename from src/org/jrimum/texgit/language/EnumFormats.java rename to src/main/java/org/jrimum/texgit/language/EnumFormats.java diff --git a/src/org/jrimum/texgit/language/EnumFormatsTypes.java b/src/main/java/org/jrimum/texgit/language/EnumFormatsTypes.java similarity index 100% rename from src/org/jrimum/texgit/language/EnumFormatsTypes.java rename to src/main/java/org/jrimum/texgit/language/EnumFormatsTypes.java diff --git a/src/org/jrimum/texgit/language/EnumPaddings.java b/src/main/java/org/jrimum/texgit/language/EnumPaddings.java similarity index 100% rename from src/org/jrimum/texgit/language/EnumPaddings.java rename to src/main/java/org/jrimum/texgit/language/EnumPaddings.java diff --git a/src/org/jrimum/texgit/language/EnumSide.java b/src/main/java/org/jrimum/texgit/language/EnumSide.java similarity index 100% rename from src/org/jrimum/texgit/language/EnumSide.java rename to src/main/java/org/jrimum/texgit/language/EnumSide.java diff --git a/src/org/jrimum/texgit/language/EnumTypes.java b/src/main/java/org/jrimum/texgit/language/EnumTypes.java similarity index 100% rename from src/org/jrimum/texgit/language/EnumTypes.java rename to src/main/java/org/jrimum/texgit/language/EnumTypes.java diff --git a/src/org/jrimum/texgit/language/MetaField.java b/src/main/java/org/jrimum/texgit/language/MetaField.java similarity index 100% rename from src/org/jrimum/texgit/language/MetaField.java rename to src/main/java/org/jrimum/texgit/language/MetaField.java diff --git a/src/org/jrimum/texgit/language/MetaFiller.java b/src/main/java/org/jrimum/texgit/language/MetaFiller.java similarity index 100% rename from src/org/jrimum/texgit/language/MetaFiller.java rename to src/main/java/org/jrimum/texgit/language/MetaFiller.java diff --git a/src/org/jrimum/texgit/language/MetaFlatFile.java b/src/main/java/org/jrimum/texgit/language/MetaFlatFile.java similarity index 100% rename from src/org/jrimum/texgit/language/MetaFlatFile.java rename to src/main/java/org/jrimum/texgit/language/MetaFlatFile.java diff --git a/src/org/jrimum/texgit/language/MetaFormatter.java b/src/main/java/org/jrimum/texgit/language/MetaFormatter.java similarity index 100% rename from src/org/jrimum/texgit/language/MetaFormatter.java rename to src/main/java/org/jrimum/texgit/language/MetaFormatter.java diff --git a/src/org/jrimum/texgit/language/MetaGroupFields.java b/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java similarity index 95% rename from src/org/jrimum/texgit/language/MetaGroupFields.java rename to src/main/java/org/jrimum/texgit/language/MetaGroupFields.java index 84cf384..c9c8c64 100644 --- a/src/org/jrimum/texgit/language/MetaGroupFields.java +++ b/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; + import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/src/org/jrimum/texgit/language/MetaGroupRecords.java b/src/main/java/org/jrimum/texgit/language/MetaGroupRecords.java similarity index 96% rename from src/org/jrimum/texgit/language/MetaGroupRecords.java rename to src/main/java/org/jrimum/texgit/language/MetaGroupRecords.java index e2eec97..338d826 100644 --- a/src/org/jrimum/texgit/language/MetaGroupRecords.java +++ b/src/main/java/org/jrimum/texgit/language/MetaGroupRecords.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; diff --git a/src/org/jrimum/texgit/language/MetaLayout.java b/src/main/java/org/jrimum/texgit/language/MetaLayout.java similarity index 100% rename from src/org/jrimum/texgit/language/MetaLayout.java rename to src/main/java/org/jrimum/texgit/language/MetaLayout.java diff --git a/src/org/jrimum/texgit/language/MetaOrderedField.java b/src/main/java/org/jrimum/texgit/language/MetaOrderedField.java similarity index 100% rename from src/org/jrimum/texgit/language/MetaOrderedField.java rename to src/main/java/org/jrimum/texgit/language/MetaOrderedField.java diff --git a/src/org/jrimum/texgit/language/MetaRecord.java b/src/main/java/org/jrimum/texgit/language/MetaRecord.java similarity index 100% rename from src/org/jrimum/texgit/language/MetaRecord.java rename to src/main/java/org/jrimum/texgit/language/MetaRecord.java diff --git a/src/org/jrimum/texgit/language/MetaTexgit.java b/src/main/java/org/jrimum/texgit/language/MetaTexgit.java similarity index 100% rename from src/org/jrimum/texgit/language/MetaTexgit.java rename to src/main/java/org/jrimum/texgit/language/MetaTexgit.java diff --git a/src/org/jrimum/texgit/language/ObjectFactory.java b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java similarity index 100% rename from src/org/jrimum/texgit/language/ObjectFactory.java rename to src/main/java/org/jrimum/texgit/language/ObjectFactory.java diff --git a/src/org/jrimum/texgit/language/package-info.java b/src/main/java/org/jrimum/texgit/language/package-info.java similarity index 100% rename from src/org/jrimum/texgit/language/package-info.java rename to src/main/java/org/jrimum/texgit/language/package-info.java diff --git a/src/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java similarity index 90% rename from src/org/jrimum/texgit/type/AbstractStringOfFields.java rename to src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index 85c0440..c491480 100644 --- a/src/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -7,7 +7,6 @@ import java.util.ListIterator; import org.apache.commons.lang.StringUtils; - import org.jrimum.utilix.ObjectUtil; import org.jrimum.utilix.TextStream; @@ -102,7 +101,6 @@ public List getFields() { /** * @see java.util.List#add(java.lang.Object) */ - @Override public boolean add(G e) { return fields.add(e); @@ -111,7 +109,6 @@ public boolean add(G e) { /** * @see java.util.List#add(int, java.lang.Object) */ - @Override public void add(int index, G element) { fields.add(index, element); @@ -120,7 +117,6 @@ public void add(int index, G element) { /** * @see java.util.List#addAll(java.util.Collection) */ - @Override public boolean addAll(Collection c) { return fields.addAll(c); @@ -129,7 +125,6 @@ public boolean addAll(Collection c) { /** * @see java.util.List#addAll(int, java.util.Collection) */ - @Override public boolean addAll(int index, Collection c) { return fields.addAll(index, c); @@ -138,7 +133,6 @@ public boolean addAll(int index, Collection c) { /** * @see java.util.List#clear() */ - @Override public void clear() { fields.clear(); @@ -147,7 +141,6 @@ public void clear() { /** * @see java.util.List#contains(java.lang.Object) */ - @Override public boolean contains(Object o) { return fields.contains(o); @@ -156,7 +149,6 @@ public boolean contains(Object o) { /** * @see java.util.List#containsAll(java.util.Collection) */ - @Override public boolean containsAll(Collection c) { return fields.containsAll(c); @@ -165,7 +157,6 @@ public boolean containsAll(Collection c) { /** * @see java.util.List#get(int) */ - @Override public G get(int index) { return fields.get(index); @@ -174,7 +165,6 @@ public G get(int index) { /** * @see java.util.List#indexOf(java.lang.Object) */ - @Override public int indexOf(Object o) { return fields.indexOf(o); @@ -183,7 +173,6 @@ public int indexOf(Object o) { /** * @see java.util.List#isEmpty() */ - @Override public boolean isEmpty() { return fields.isEmpty(); @@ -192,7 +181,6 @@ public boolean isEmpty() { /** * @see java.util.List#iterator() */ - @Override public Iterator iterator() { return fields.iterator(); @@ -201,7 +189,6 @@ public Iterator iterator() { /** * @see java.util.List#lastIndexOf(java.lang.Object) */ - @Override public int lastIndexOf(Object o) { return fields.indexOf(o); @@ -210,7 +197,6 @@ public int lastIndexOf(Object o) { /** * @see java.util.List#listIterator() */ - @Override public ListIterator listIterator() { return fields.listIterator(); @@ -219,7 +205,6 @@ public ListIterator listIterator() { /** * @see java.util.List#listIterator(int) */ - @Override public ListIterator listIterator(int index) { return fields.listIterator(index); @@ -228,7 +213,6 @@ public ListIterator listIterator(int index) { /** * @see java.util.List#remove(int) */ - @Override public G remove(int index) { return fields.remove(index); @@ -237,7 +221,6 @@ public G remove(int index) { /** * @see java.util.List#remove(java.lang.Object) */ - @Override public boolean remove(Object o) { return fields.remove(o); @@ -246,7 +229,6 @@ public boolean remove(Object o) { /** * @see java.util.List#removeAll(java.util.Collection) */ - @Override public boolean removeAll(Collection c) { return fields.removeAll(c); @@ -255,7 +237,6 @@ public boolean removeAll(Collection c) { /** * @see java.util.List#retainAll(java.util.Collection) */ - @Override public boolean retainAll(Collection c) { return fields.retainAll(c); @@ -264,7 +245,6 @@ public boolean retainAll(Collection c) { /** * @see java.util.List#set(int, java.lang.Object) */ - @Override public G set(int index, G element) { return fields.set(index, element); @@ -273,7 +253,6 @@ public G set(int index, G element) { /** * @see java.util.List#size() */ - @Override public int size() { return fields.size(); @@ -282,7 +261,6 @@ public int size() { /** * @see java.util.List#subList(int, int) */ - @Override public List subList(int fromIndex, int toIndex) { return fields.subList(fromIndex, toIndex); @@ -291,7 +269,6 @@ public List subList(int fromIndex, int toIndex) { /** * @see java.util.List#toArray() */ - @Override public Object[] toArray() { return fields.toArray(); @@ -300,7 +277,6 @@ public Object[] toArray() { /** * @see java.util.List#toArray(T[]) */ - @Override public T[] toArray(T[] a) { return fields.toArray(a); diff --git a/src/org/jrimum/texgit/type/Field.java b/src/main/java/org/jrimum/texgit/type/Field.java similarity index 100% rename from src/org/jrimum/texgit/type/Field.java rename to src/main/java/org/jrimum/texgit/type/Field.java diff --git a/src/org/jrimum/texgit/type/Fixed.java b/src/main/java/org/jrimum/texgit/type/Fixed.java similarity index 100% rename from src/org/jrimum/texgit/type/Fixed.java rename to src/main/java/org/jrimum/texgit/type/Fixed.java diff --git a/src/org/jrimum/texgit/type/FixedField.java b/src/main/java/org/jrimum/texgit/type/FixedField.java similarity index 100% rename from src/org/jrimum/texgit/type/FixedField.java rename to src/main/java/org/jrimum/texgit/type/FixedField.java diff --git a/src/org/jrimum/texgit/type/FixedLength.java b/src/main/java/org/jrimum/texgit/type/FixedLength.java similarity index 100% rename from src/org/jrimum/texgit/type/FixedLength.java rename to src/main/java/org/jrimum/texgit/type/FixedLength.java diff --git a/src/org/jrimum/texgit/type/FixedSize.java b/src/main/java/org/jrimum/texgit/type/FixedSize.java similarity index 100% rename from src/org/jrimum/texgit/type/FixedSize.java rename to src/main/java/org/jrimum/texgit/type/FixedSize.java diff --git a/src/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java similarity index 94% rename from src/org/jrimum/texgit/type/component/BlockOfFields.java rename to src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index d95a4d3..5d651cb 100644 --- a/src/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -5,7 +5,6 @@ import org.jrimum.texgit.type.AbstractStringOfFields; import org.jrimum.texgit.type.FixedLength; import org.jrimum.texgit.type.FixedSize; - import org.jrimum.utilix.ObjectUtil; @SuppressWarnings("serial") @@ -100,7 +99,6 @@ public String write() { return str; } - @Override public boolean isFixedAsDefined() throws IllegalStateException { return (isSizeAsDefinaed() && isLengthWithDefinaed()); diff --git a/src/org/jrimum/texgit/type/component/CommonFiller.java b/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java similarity index 100% rename from src/org/jrimum/texgit/type/component/CommonFiller.java rename to src/main/java/org/jrimum/texgit/type/component/CommonFiller.java diff --git a/src/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java similarity index 94% rename from src/org/jrimum/texgit/type/component/Field.java rename to src/main/java/org/jrimum/texgit/type/component/Field.java index b783b5b..a88175f 100644 --- a/src/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -1,8 +1,8 @@ package org.jrimum.texgit.type.component; -import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.apache.commons.lang.StringUtils.isBlank; import static org.apache.commons.lang.StringUtils.isNumeric; +import static org.jrimum.utilix.ObjectUtil.isNotNull; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -13,7 +13,6 @@ import java.util.Date; import org.apache.commons.lang.StringUtils; - import org.jrimum.utilix.DateUtil; import org.jrimum.utilix.ObjectUtil; import org.jrimum.utilix.TextStream; @@ -106,7 +105,6 @@ public Field clone() throws CloneNotSupportedException { return (Field) super.clone(); } - @Override public void read(String str) { ObjectUtil.checkNotNull(str, "String Inválida"); @@ -219,7 +217,6 @@ private void readStringOrNumericField(String str) { } } - @Override public String write() { String str = null; diff --git a/src/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java similarity index 95% rename from src/org/jrimum/texgit/type/component/Filler.java rename to src/main/java/org/jrimum/texgit/type/component/Filler.java index 7b076c7..bb53608 100644 --- a/src/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -35,7 +35,6 @@ import java.io.Serializable; import org.apache.commons.lang.StringUtils; - import org.jrimum.utilix.TextStream; /** diff --git a/src/org/jrimum/texgit/type/component/FixedField.java b/src/main/java/org/jrimum/texgit/type/component/FixedField.java similarity index 93% rename from src/org/jrimum/texgit/type/component/FixedField.java rename to src/main/java/org/jrimum/texgit/type/component/FixedField.java index 0766855..c09cabe 100644 --- a/src/org/jrimum/texgit/type/component/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/component/FixedField.java @@ -120,7 +120,6 @@ private String fill(String str) { return str; } - @Override public boolean isFixedAsDefined() throws IllegalStateException { if(instantLength.equals(getFixedLength())) @@ -130,7 +129,6 @@ public boolean isFixedAsDefined() throws IllegalStateException { + " ] diferente do especificado [" + getFixedLength() + "]!"); } - @Override public Integer getFixedLength() { return this.length; @@ -145,12 +143,10 @@ public void setFixedLength(Integer length) { } - @Override public Filler getFiller() { return filler; } - @Override public void setFiller(Filler filler) { if(isNotNull(filler)) diff --git a/src/org/jrimum/texgit/type/component/FlatFile.java b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java similarity index 93% rename from src/org/jrimum/texgit/type/component/FlatFile.java rename to src/main/java/org/jrimum/texgit/type/component/FlatFile.java index 37c59d9..825932e 100644 --- a/src/org/jrimum/texgit/type/component/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java @@ -1,8 +1,8 @@ package org.jrimum.texgit.type.component; +import static org.apache.commons.lang.StringUtils.isNotBlank; import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.jrimum.utilix.ObjectUtil.isNull; -import static org.apache.commons.lang.StringUtils.isNotBlank; import java.util.ArrayList; import java.util.Collection; @@ -75,7 +75,6 @@ public boolean isMyRecord(String idName){ return is; } - @Override public void read(List str) { if(isNotNull(str)){ @@ -144,7 +143,6 @@ record = null; } } - @Override public List write() { ArrayList out = new ArrayList(records.size()); @@ -179,7 +177,6 @@ public List write() { return out; } - @Override public void addRecord(org.jrimum.texgit.Record record) { if(isNotNull(record)){ @@ -188,7 +185,6 @@ public void addRecord(org.jrimum.texgit.Record record) { } } - @Override public Collection getRecords(String idName) { List secRecords = new ArrayList(); @@ -207,37 +203,31 @@ public Collection getRecords(String idName) { return secRecords; } - @Override public void addAllRecords(Collection records) { // TODO Auto-generated method stub } - @Override public void addRecords(String idName, Collection records) { // TODO Auto-generated method stub } - @Override public Collection getAllRecords() { // TODO Auto-generated method stub return null; } - @Override public org.jrimum.texgit.Record removeRecord(String idName) { // TODO Auto-generated method stub return null; } - @Override public void setAllRecords(Collection records) { // TODO Auto-generated method stub } - @Override public void setRecords(String idName, Collection records) { // TODO Auto-generated method stub diff --git a/src/org/jrimum/texgit/type/component/Record.java b/src/main/java/org/jrimum/texgit/type/component/Record.java similarity index 95% rename from src/org/jrimum/texgit/type/component/Record.java rename to src/main/java/org/jrimum/texgit/type/component/Record.java index 60c03f3..0d5c092 100644 --- a/src/org/jrimum/texgit/type/component/Record.java +++ b/src/main/java/org/jrimum/texgit/type/component/Record.java @@ -1,8 +1,8 @@ package org.jrimum.texgit.type.component; +import static org.apache.commons.lang.StringUtils.isNotBlank; import static org.jrimum.utilix.ObjectUtil.isNotNull; import static org.jrimum.utilix.ObjectUtil.isNull; -import static org.apache.commons.lang.StringUtils.isNotBlank; import java.util.ArrayList; import java.util.List; @@ -270,7 +270,6 @@ public boolean isMyRecord(String idName){ return is; } - @Override public void addInnerRecord(org.jrimum.texgit.Record record) { if(isNotNull(record)){ @@ -285,14 +284,12 @@ public void addInnerRecord(org.jrimum.texgit.Record record) { } } - @Override public List getInnerRecords() { return this.innerRecords; } @SuppressWarnings("unchecked") - @Override public G getValue(String fieldName) { G value = null; @@ -306,7 +303,6 @@ public G getValue(String fieldName) { } @SuppressWarnings("unchecked") - @Override public void setValue(String fieldName, G value) { org.jrimum.texgit.type.Field f = (Field) getField(fieldName); diff --git a/src/org/jrimum/texgit/type/component/RecordFactory.java b/src/main/java/org/jrimum/texgit/type/component/RecordFactory.java similarity index 100% rename from src/org/jrimum/texgit/type/component/RecordFactory.java rename to src/main/java/org/jrimum/texgit/type/component/RecordFactory.java diff --git a/src/org/jrimum/texgit/type/component/Side.java b/src/main/java/org/jrimum/texgit/type/component/Side.java similarity index 100% rename from src/org/jrimum/texgit/type/component/Side.java rename to src/main/java/org/jrimum/texgit/type/component/Side.java diff --git a/src/org/jrimum/texgit/util/FileUtil.java b/src/main/java/org/jrimum/texgit/util/FileUtil.java similarity index 100% rename from src/org/jrimum/texgit/util/FileUtil.java rename to src/main/java/org/jrimum/texgit/util/FileUtil.java diff --git a/src/resource/TexgitSchema.xsd b/src/main/resources/TexgitSchema.xsd similarity index 100% rename from src/resource/TexgitSchema.xsd rename to src/main/resources/TexgitSchema.xsd diff --git a/src/org/jrimum/utilix/DateUtil.java b/src/org/jrimum/utilix/DateUtil.java deleted file mode 100644 index 7dcb3a5..0000000 --- a/src/org/jrimum/utilix/DateUtil.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright 2008 JRimum Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by - * applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - * OF ANY KIND, either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * Created at: 30/03/2008 - 18:17:40 - * - * ================================================================================ - * - * Direitos autorais 2008 JRimum Project - * - * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar - * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma - * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que - * haja exigência legal ou acordo por escrito, a distribuição de software sob - * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER - * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a - * reger permissões e limitações sob esta LICENÇA. - * - * Criado em: 30/03/2008 - 18:17:40 - * - */ - -package org.jrimum.utilix; - -import static org.jrimum.utilix.ObjectUtil.isNotNull; - -import java.io.Serializable; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; - -import org.apache.commons.lang.time.DateUtils; - -/** - * - *

- * Serviços utilitários relacionados a manipulação de Objetos - * Date, Calendar, GregorianCalendar. - *

- * - * - * - * @author Gilmar P.S.L - * @author Misael Barreto - * @author Rômulo Augusto - * @author Nordeste Fomento - * Mercantil - * - * @since 0.2 - * - * @version 0.2 - */ -public class DateUtil implements Serializable { - - /** - * - */ - private static final long serialVersionUID = 4339951860440604914L; - - /** - *

- * Formatador de datas no padrão dd/MM/yyyy. - *

- */ - public static final DateFormat FORMAT_DD_MM_YYYY = new SimpleDateFormat( - "dd/MM/yyyy"); - - /** - *

- * Formatador de datas no padrão ddMMyy. - *

- */ - public static final DateFormat FORMAT_DDMMYY = new SimpleDateFormat( - "ddMMyy"); - - /** - *

- * Formatador de datas no padrão yyMMdd. - *

- */ - public static final DateFormat FORMAT_YYMMDD = new SimpleDateFormat( - "yyMMdd"); - - /** - *

- * Representa uma data inexistente, pode ser usada em casos que não se pode - * usar null [ é obtida da seguinte forma: - * new GregorianCalendar(1, 0, 1).getTime() ] - *

- */ - public static final Date DATE_NULL; - - static { - - Calendar calendar = Calendar.getInstance(); - calendar.set(1, 0, 1); - calendar.setLenient(false); - DATE_NULL = DateUtils.truncate(calendar.getTime(), Calendar.YEAR); - } - - /** - *

- * Converte um objeto String em um objeto - * java.util.Date no formato de data padrão brasileiro: - * dd/MM/yyyy. - *

- *

- * Utiliza a sobrecarca - * parse(String dateAsString, DateFormat dateFormat) para - * realizar a conversão. - *

- * - * @param dateAsString - * - um valor de data em forma de String. - * @return Objeto java.util.Date convertido a partir do objeto - * String - * - * @throws IllegalArgumentException - * caso o objeto String não seja um valor válido de - * data suportado pelo formato. - * @since 0.2 - */ - public static Date parse(String dateAsString) { - - return parse(dateAsString, FORMAT_DD_MM_YYYY); - } - - /** - *

- * Converte um objeto String em um objeto - * java.util.Date a partir do formato de data especificado. - *

- *

- * Utiliza a sobrecarca - * parse(String dateAsString, DateFormat dateFormat) para - * realizar a conversão. - *

- * - * @param dateAsString - * - um valor de data em forma de String. - * @param dateFormat - * - formato de data - * @return Objeto java.util.Date convertido a partir do objeto - * String - * - * @throws IllegalArgumentException - * caso o objeto String não seja um valor válido de - * data suportado pelo formato. - * @since 0.2 - */ - public static Date parse(String dateAsString, String dateFormat) { - - if (dateFormat == null) { - throw new NullPointerException( - "O formato da data não pode ter valor [null]."); - } - - return parse(dateAsString, new SimpleDateFormat(dateFormat)); - } - - /** - *

- * Converte um objeto String em um objeto - * java.util.Date através do objeto - * java.text.DateFormat especificado. - *

- * - * @param dateAsString - * - um valor de data em forma de String. - * @param dateFormat - * - formatador para objetos java.util.Date. - * @return Objeto java.util.Date convertido a partir do objeto - * String - * - * @throws IllegalArgumentException - * caso o objeto String não seja um valor válido de - * data suportado pelo formatador. - * @since 0.2 - */ - public static Date parse(String dateAsString, DateFormat dateFormat) { - - Date date = null; - - if (dateAsString == null) { - throw new NullPointerException( - "A String a ser convertida não pode ter valor [null]."); - } - - if (dateFormat == null) { - throw new NullPointerException( - "O formatador não pode ter valor [null]."); - } - - try { - - date = dateFormat.parse(dateAsString); - - } catch (ParseException e) { - - String msg = "A String [" + dateAsString - + "] deve ser uma data válida no formato"; - if (dateFormat instanceof SimpleDateFormat) { - SimpleDateFormat sdf = (SimpleDateFormat) dateFormat; - msg += " [" + sdf.toPattern() + "]."; - - } else { - msg += " especificado."; - } - - IllegalArgumentException iae = new IllegalArgumentException(msg); - iae.initCause(e); - throw iae; - } - - return date; - } - - /** - *

- * Calcula a diferença de dias entre duas datas. O resultado é modular, ou - * seja, maior ou igual a zero, logo a data final não precisa ser - * necessariamente maior que a data inicial. - *

- * - * @param dataInicial - * - data inicial do intervalo. - * @param dataFinal - * - data final do intervalo. - * @return número(módulo) de dias entre as datas. - * - * @throws IllegalArgumentException - * Caso pelo menos uma das duas datas seja null. - * @since 0.2 - */ - public static long calculeDiferencaEmDias(final Date dataInicial, - final Date dataFinal) { - - long fator = 0; - Date dataInicialTruncada, dataFinalTruncada; - - if (isNotNull(dataInicial) && isNotNull(dataFinal)) { - - dataInicialTruncada = DateUtils - .truncate(dataInicial, Calendar.DATE); - dataFinalTruncada = DateUtils.truncate(dataFinal, Calendar.DATE); - - fator = ((dataFinalTruncada.getTime() - dataInicialTruncada - .getTime()) / DateUtils.MILLIS_PER_DAY); - - if (fator < 0) { - fator *= -1; - } - } else { - throw new IllegalArgumentException("A data inicial [" + dataInicial - + "] e a data final [" + dataFinal + "] " - + "não podem ter valor 'null'."); - } - - return fator; - } - -} diff --git a/src/org/jrimum/utilix/ObjectUtil.java b/src/org/jrimum/utilix/ObjectUtil.java deleted file mode 100644 index 3f12dc0..0000000 --- a/src/org/jrimum/utilix/ObjectUtil.java +++ /dev/null @@ -1,624 +0,0 @@ -/* - * Copyright 2008 JRimum Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by - * applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - * OF ANY KIND, either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * Created at: 30/03/2008 - 18:02:40 - * - * ================================================================================ - * - * Direitos autorais 2008 JRimum Project - * - * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar - * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma - * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que - * haja exigência legal ou acordo por escrito, a distribuição de software sob - * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER - * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a - * reger permissões e limitações sob esta LICENÇA. - * - * Criado em: 30/03/2008 - 18:02:40 - * - */ - -package org.jrimum.utilix; - -import java.io.Serializable; -import java.util.Collection; -import java.util.Map; - -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.log4j.Logger; - -/** - *

- * Classe utilitária para validações de objetos em geral, como verificações - * de objetos nulos, coleções/arrays vazios. - *

- *

- * Fornece métodos booleanos e métodos que verificam se o valor do objeto está de acordo - * com o desejado e, caso não estejam, lançam exceção. - *

- * - * @author Gilmar P.S.L. - * @author Rômulo Augusto - * - * @since 0.2 - * - * @version 0.2 - */ -public class ObjectUtil implements Serializable { - - private static final long serialVersionUID = -6790981191128287923L; - - private static Logger log = Logger.getLogger(ObjectUtil.class); - - /** - * Construtor privado para previnir a instanciação. - * - * @throws AssertionError caso haja alguma tentativa de utilização deste construtor. - */ - private ObjectUtil() { - throw new AssertionError(); - } - - /** - *

- * Método privado para fins de reutilização de código. Deve ser utilizado para verificar se - * coleções ou mapas são vazios. - *

- *

- * Verifica se o objeto passado por parâmetro é null ou se tem tamanho zero. Para verificar - * o tamanho, primeiro realiza um "cast" para Collection, caso seja instância de Collection, - * ou para Map, caso seja instância de Map, e utiliza o método "size()". - *

- * - * @param object - Objeto analisado - * @return isNull(object) || size == 0; - */ - private static boolean isEmpty(Object object) { - - int size = 0; - - if (object instanceof Collection) { - size = ((Collection) object).size(); - - } else if (object instanceof Map) { - size = ((Map) object).size(); - } - - return isNull(object) || size == 0; - } - - /** - *

- * Método privado para fins de reutilização de código. Deve ser utilizado para verificar se - * coleções ou mapas são vazios. - *

- *

- * Verifica se o objeto passado por parâmetro é null ou se tem tamanho zero. - * Para verificar o tamanho, primeiro realiza um "cast" para Collection, caso seja instância de Collection, - * ou para Map, caso seja instância de Map, e utiliza o método "size()". - *

- * - * @param object - Objeto analisado - * @param message - Mensagem utilizada na exceção - * - * @throws IllegalArgumentException Caso o objeto não seja vazio - */ - private static void checkEmpty(Object object, String message) { - - if (isNotEmpty(object)) { - throw new IllegalArgumentException(message); - } - } - - /** - *

- * Método privado para fins de reutilização de código. Deve ser utilizado para verificar se - * coleções ou mapas não são vazios. - *

- *

- * Verifica se o objeto passado por parâmetro não é null ou se tem tamanho zero. - * Para verificar o tamanho, primeiro realiza um "cast" para Collection, caso seja instância de Collection, - * ou para Map, caso seja instância de Map, e utiliza o método "size()". - *

- *

- * Caso o objeto seja null, lança NullPointerException com a mensagem informada no - * parâmetro messageNullPointer (primeiro parâmetro String). Caso o objeto não seja - * null e não possua elementos, lança IllegalArgumentException com a mensagem - * informada no parâmetro messageIllegalArgument (segundo parâmetro String). - *

- * - * @param object - Objeto analisado - * @param messageNullPointer - Mensagem utiliada na exceção NullPointerException - * @param messageIllegalArgument - Mensagem utiliada na exceção IllegalArgumentException - */ - private static void checkNotEmpty(Object object, String messageNullPointer, String messageIllegalArgument) { - - if (isNull(object)) { - throw new NullPointerException(messageNullPointer); - } - - if (isEmpty(object)) { - throw new IllegalArgumentException(messageIllegalArgument); - } - } - - /** - *

- * Verifica a referência ao objeto e lança uma exceção para casos onde a - * referência é nula incluíndo na mensagem de exceção o nome do parâmetro - * passado. - *

- * - * @param object - * @param name - * - * @return (object == null ? true : false) - * - * @throws IllegalArgumentException - * - * @see #isNotNull(Object, String) - * - * @since 0.2 - */ - @Deprecated - public static boolean isNull(Object object, String name) throws IllegalArgumentException { - - boolean is = true; - - if (object != null) { - is = false; - - } else { - - IllegalArgumentException e = new IllegalArgumentException( - (name != null ? name : "Objeto ") + " inválido : [" - + object + "]!"); - - log.error(StringUtils.EMPTY, e); - - throw e; - } - - return is; - } - - /** - *

- * Verifica a referência ao objeto e lança uma exceção para casos onde a - * referência é nula incluíndo na mensagem de exceção o nome do parâmetro - * passado. - *

- * - *

- * É o mesmo que usar !isNull(obj1,"obj1") a diferença é que - * utiliza-se um símbolo ! a menos. - *

- * - * @param object - * @param name - * - * @return (object != null ? true : false) - * - * @throws IllegalArgumentException - * - * @see #isNull(Object, String) - * - * @since 0.2 - */ - @Deprecated - public static boolean isNotNull(Object object, String name) throws IllegalArgumentException { - return !isNull(object, name); - } - - /** - *

- * Verifica se o objeto passado por parâmetro é null. - *

- * - * @param object - Objeto analisado - * - * @return (object == null ? true : false) - * - * @since 0.2 - */ - public static boolean isNull(Object object) { - return (object == null); - } - - /** - *

- * Verifica se o objeto passado por parâmetro não é null. - *

- *

- * É o mesmo que usar o método isNull da forma !isNull(obj), porém - * de forma mais legível. - *

- * - * @param object - Objeto analisado - * - * @return (object != null ? true : false) - * - * @see #isNull(Object) - * - * @since 0.2 - */ - public static boolean isNotNull(Object object) { - return !isNull(object); - } - - /** - *

- * Verifica se existe uma referência ao objeto dado. - *

- * - * @param object - Objeto analisado - * - * @return (object != null ? true : false) - * - * @see #isNotNull(Object) - * - * @since 0.2 - */ - public static boolean exists(Object object) { - return isNotNull(object); - } - - /** - *

- * Verifica se a Collection passada por parâmetro é null ou - * não possui elementos. - *

- * - * @param collection - Instância de Collection analisada - * @return (collection == null || collection.size() == 0 ? true : false) - * - * @since 0.2 - */ - public static boolean isEmpty(Collection collection) { - return isEmpty((Object) collection); - } - - /** - *

- * Verifica se a Collection passada por parâmetro não é null - * e possui elementos. - *

- * - * @param collection - Instância de Collection analisada - * @return (collection != null && collection.size() > 0 ? true : false) - * - * @see #isEmpty(Collection) - * - * @since 0.2 - */ - public static boolean isNotEmpty(Collection collection) { - return isNotEmpty((Object) collection); - } - - /** - *

- * Verifica se o Map passado por parâmetro é null ou - * não possui elementos. - *

- * - * @param map - Instância de Map analisada - * @return (map == null || map.size() == 0 ? true : false) - * - * @since 0.2 - */ - public static boolean isEmpty(Map map) { - return isEmpty((Object) map); - } - - /** - *

- * Verifica se o Map passado por parâmetro não é null - * e possui elementos. - *

- * - * @param map - Instância de Map analisada - * @return (map != null && map.size() > 0 ? true : false) - * - * @see #isEmpty(Map) - * - * @since 0.2 - */ - public static boolean isNotEmpty(Map map) { - return isNotEmpty((Object) map); - } - - /** - *

- * Método privado para fins de reutilização de código. Deve ser utilizado para verificar se - * coleções ou mapas não são vazios. - *

- *

- * Verifica se o objeto passado por parâmetro não é null ou se tem tamanho zero. - * Para verificar o tamanho, primeiro realiza um "cast" para Collection, caso seja instância de Collection, - * ou para Map, caso seja instância de Map, e utiliza o método "size()". - *

- * - * @param object - Objecto analisado - * @return (object != null && size > 0 ? true : false) - * - * @since 0.2 - */ - public static boolean isNotEmpty(Object object) { - return !isEmpty(object); - } - - /** - *

- * Verifica se o objeto é nulo e lança IllegalArgumentException, com a mensagem - * informada, caso não seja. - *

- * - * @thows IllegalArgumentException - Caso o objeto não seja null. - * - * @see #isNull(Object) - * @see #isNotNull(Object) - * - * @since 0.2 - * - * @param object - Objeto analisado - * @param message - Mensagem utilizada na exceção - */ - public static void checkNull(Object object, String message) { - - if (isNotNull(object)) { - throw new IllegalArgumentException(message); - } - } - - /** - *

- * Verifica se o objeto é nulo e lança IllegalArgumentException caso - * não seja. - *

- * - * @param object - Objeto analisado - * - * @thows IllegalArgumentException - Caso o objeto não seja null. - * - * @see #checkNull(Object, String) - * @see #isNull(Object) - * @see #isNotNull(Object) - * - * @since 0.2 - */ - public static void checkNull(Object object) { - checkNull(object, "Objeto não nulo. Valor [" + object + "]"); - } - - /** - *

- * Verifica se o objeto não é nulo e lança NullPointerException, com - * a mensagem informada, caso seja. - *

- * - * @param object - Objeto analisado - * @param message - Mensagem utilizada na exceção - * - * @thows NullPointerException - Caso o objeto seja null. - * - * @see #isNull(Object) - * @see #isNotNull(Object) - * - * @since 0.2 - */ - public static void checkNotNull(Object object, String message) { - - if (isNull(object)) { - throw new NullPointerException(message); - } - } - - /** - *

- * Verifica se o objeto não é nulo e lança NullPointerException - * caso seja. - *

- * - * @param object - Objeto analisado - * - * @thows NullPointerException - Caso o objeto seja null. - * - * @see #checkNotNull(Object, String) - * @see #isNull(Object) - * @see #isNotNull(Object) - * - * @since 0.2 - */ - public static void checkNotNull(Object object) { - checkNotNull(object, "Objeto nulo"); - } - - /** - *

- * Verifica se a Collection passado por parâmetro é null ou - * não possui elementos e lança exceção, com a mensagem informada, - * caso não preencha estes requisitos. - *

- * - * @param collection - Instância de Collection analisada - * @param message - Mensagem utilizada na exceção - * - * @thows IllegalArgumentException - Caso a coleção não seja null e possua elementos. - * - * @see #isEmpty(Collection) - * @see #isNotEmpty(Collection) - * - * @since 0.2 - */ - public static void checkEmpty(Collection collection, String message) { - checkEmpty((Object) collection, message); - } - - /** - *

- * Verifica se a Collection passada por parâmetro é null ou - * não possui elementos e lança exceção caso não preencha estes requisitos. - *

- * - * @param collection - Instância de Collection analisada - * - * @thows IllegalArgumentException - Caso a coleção não seja null e possua elementos. - * - * @see #checkEmpty(Collection, String) - * @see #isEmpty(Collection) - * @see #isNotEmpty(Collection) - * - * @since 0.2 - */ - public static void checkEmpty(Collection collection) { - checkEmpty(collection, "Collection não nulo e com elementos. Valor [" + collection + "]"); - } - - /** - *

- * Verifica se a Collection passada por parâmetro não é null e - * possui elementos e lança exceção, com a mensagem informada, caso não preencha estes requisitos. - *

- * - * @param collection - Instância de Collection analisada - * @param message - Mensagem utiliada na exceção - * - * @throws NullPointerException - Caso a coleção seja null. - * @thows IllegalArgumentException - Caso a coleção não possua elementos. - * - * @see #isEmpty(Collection) - * @see #isNotEmpty(Collection) - * - * @since 0.2 - */ - public static void checkNotEmpty(Collection collection, String message) { - checkNotEmpty(collection, message, message); - } - - /** - *

- * Verifica se a Collection passada por parâmetro não é null e - * possui elementos e lança exceção caso não preencha estes requisitos. - *

- * - * @param map - Instância de Collection analisada - * - * @throws NullPointerException - Caso a coleção seja null. - * @thows IllegalArgumentException - Caso a coleção não possua elementos. - * - * @see #checkNotEmpty(Collection, String) - * @see #isEmpty(Collection) - * @see #isNotEmpty(Collection) - * - * @since 0.2 - */ - public static void checkNotEmpty(Collection collection) { - checkNotEmpty(collection, "Objeto nulo", "Collection sem elementos"); - } - - /** - *

- * Verifica se o Map passado por parâmetro é null ou - * não possui elementos e lança exceção, com a mensagem informada, - * caso não preencha estes requisitos. - *

- * - * @param map - Instância de Map analisada - * @param message - Mensagem utilizada na exceção - * - * @thows IllegalArgumentException - Caso o mapa não seja null e possua elementos. - * - * @see #isEmpty(Map) - * @see #isNotEmpty(Map) - * - * @since 0.2 - */ - public static void checkEmpty(Map map, String message) { - checkEmpty((Object) map, message); - } - - /** - *

- * Verifica se o Map passado por parâmetro é null ou - * não possui elementos e lança exceção caso não preencha estes requisitos. - *

- * - * @param map - Instância de Map analisada - * - * @thows IllegalArgumentException - Caso o mapa não seja null e possua elementos. - * - * @see #checkEmpty(Map, String) - * @see #isEmpty(Map) - * @see #isNotEmpty(Map) - * - * @since 0.2 - */ - public static void checkEmpty(Map map) { - checkEmpty(map, "Map não nulo e com elementos. Valor [" + map + "]"); - } - - /** - *

- * Verifica se o Map passado por parâmetro não é null e - * possui elementos e lança exceção, com a mensagem informada, caso não preencha estes requisitos. - *

- * - * @param map - Instância de Map analisada - * @param message - Mensagem utiliada na exceção - * - * @throws NullPointerException - Caso o mapa seja null. - * @thows IllegalArgumentException - Caso o mapa não possua elementos. - * - * @see #isEmpty(Map) - * @see #isNotEmpty(Map) - * - * @since 0.2 - */ - public static void checkNotEmpty(Map map, String message) { - checkNotEmpty(map, message, message); - } - - /** - *

- * Verifica se o Map passado por parâmetro não é null e - * possui elementos e lança exceção caso não preencha estes requisitos. - *

- * - * @param map - Instância de Map analisada - * - * @throws NullPointerException - Caso o mapa seja null. - * @thows IllegalArgumentException - Caso o mapa não possua elementos. - * - * @see #checkNotEmpty(Map, String) - * @see #isEmpty(Map) - * @see #isNotEmpty(Map) - * - * @since 0.2 - */ - public static void checkNotEmpty(Map map) { - checkNotEmpty(map, "Objeto nulo", "Map sem elementos"); - } - - /** - * Exibe os valores de instância para um objeto JRimum. - * - * @see org.apache.commons.lang.builder.ToStringBuilder#reflectionToString - * - * @since 0.2 - * - * @see java.lang.Object#toString() - */ - public static String toString(Object obj) { - return "JRimumObject: " + ToStringBuilder.reflectionToString(obj); - } -} diff --git a/src/org/jrimum/utilix/ReadWriteStream.java b/src/org/jrimum/utilix/ReadWriteStream.java deleted file mode 100644 index f4671cb..0000000 --- a/src/org/jrimum/utilix/ReadWriteStream.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2008 JRimum Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by - * applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - * OF ANY KIND, either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * Created at: 30/03/2008 - 18:17:10 - * - * ================================================================================ - * - * Direitos autorais 2008 JRimum Project - * - * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar - * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma - * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que - * haja exigência legal ou acordo por escrito, a distribuição de software sob - * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER - * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a - * reger permissões e limitações sob esta LICENÇA. - * - * Criado em: 30/03/2008 - 18:17:10 - * - */ - -package org.jrimum.utilix; - -import java.io.Serializable; - -/** - * - *

- * Interface genérica e representativa de coisas que necessitam de operações de - * fluxo de escrita e leitura. - *

- * - * @author Gilmar P.S.L. - * - * @since 0.2 - * - * @version 0.2 - */ - -public interface ReadWriteStream extends Serializable { - - /** - *

- * Escreve o tipo infomado. - *

- * - * @return Um valor no mesmo tipo do tipo parametrizado - * @since 0.2 - */ - public abstract G write(); - - /** - *

- * Lê o tipo informado. - *

- * - * @param g - * valor a ser lido - * @since 0.2 - */ - public abstract void read(G g); - -} diff --git a/src/org/jrimum/utilix/StringUtil.java b/src/org/jrimum/utilix/StringUtil.java deleted file mode 100644 index f186d96..0000000 --- a/src/org/jrimum/utilix/StringUtil.java +++ /dev/null @@ -1,337 +0,0 @@ -/* - * Copyright 2008 JRimum Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by - * applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - * OF ANY KIND, either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * Created at: 30/03/2008 - 18:18:19 - * - * ================================================================================ - * - * Direitos autorais 2008 JRimum Project - * - * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar - * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma - * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que - * haja exigência legal ou acordo por escrito, a distribuição de software sob - * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER - * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a - * reger permissões e limitações sob esta LICENÇA. - * - * Criado em: 30/03/2008 - 18:18:19 - * - */ - -package org.jrimum.utilix; - -import static org.jrimum.utilix.ObjectUtil.isNotNull; - -import java.io.Serializable; - -import org.apache.commons.lang.StringUtils; - -/** - *

- * Esta classe tem a responsabilidade de prover serviços utilitários - * relacionados a manipulação de Strings - *

- * - * - * @author Gilmar P.S.L - * @author Misael Barreto - * @author Rômulo Augusto - * @author Nordeste Fomento - * Mercantil - * - * @since 0.2 - * - * @version 0.2 - */ -public class StringUtil implements Serializable { - - public static final String WHITE_SPACE = " "; - - /** - * - */ - private static final long serialVersionUID = 7425529940068032055L; - - /** - *

- * Construtor privado que previne a instanciação da classe até por - * reflection - *

- * - * @since 0.2 - */ - private StringUtil() { - throw new AssertionError(); - } - - /** - *

- * Método privado para fins de reutilização de código. - *

- *

- * Verifica se a String passada por parâmetro não é null, - * não é vazia (StringUtils.EMPTY) e não possui apenas espaços em branco. - *

- *

- * Lança NullPointerException, com a mensagem definida em messageNullPointer - * (segundo parâmetro String), caso o valor passado seja null - *

- *

- * Lança IllegalArgumentException, com a mensagem definida em messageIllegalArgument - * (terceiro parâmetro String), caso o valor passado seja vazio ou contenha apenas espaços em branco. - *

- * - * @param value - String analisada - * - * @throws NullPointerException - Caso a string seja null. - * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaços em branco. - * - * @since 0.2 - */ - private static void checkNotBlank(String value, String messageNullPointer, String messageIllegalArgument) { - - ObjectUtil.checkNotNull(value, messageNullPointer); - - if (StringUtils.isBlank(value)) { - throw new IllegalArgumentException(messageIllegalArgument); - } - } - - /** - *

- * Elimina simbolos como:

><,;.:!*&%+-_<>[]\/
- *

- * - * @param str - * String com os símbolos a serem removidos. - * @return String sem símbolos. - * @since 0.2 - */ - public static String eliminateSymbols(final String str) { - - String modifiedStr = str; - - if (isNotNull(modifiedStr)) { - - modifiedStr = StringUtils.replace(str, "-", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "_", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "=", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "+", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "%", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "*", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "@", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "#", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "&", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, ":", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, ".", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, ";", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, ",", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "!", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "?", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "(", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, ")", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "{", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "}", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "[", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "]", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "/", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "\\", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, ">", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "<", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "\"", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "'", StringUtils.EMPTY); - modifiedStr = StringUtils.replace(str, "`", StringUtils.EMPTY); - } - - return modifiedStr; - } - - /** - *

- * Remove os zeros iniciais de uma String, seja ela numérica ou - * não. - *

- *

- * removeStartWithZeros("00000") => 0
- * removeStartWithZeros("00023") => 23
- * removeStartWithZeros("02003") => 2003 - *

- * - * @param str - * @return a string sem zeros inicias ou um único zero. - * - * @since 0.2 - */ - - public static String removeStartWithZeros(final String str) { - - String withoutZeros = StringUtils.EMPTY; - final String zero = "0"; - - if (isNotNull(str)) { - - if (StringUtils.startsWith(str, zero)) { - - withoutZeros = StringUtils.removeStart(str, zero); - - while (StringUtils.startsWith(withoutZeros, zero)) { - withoutZeros = StringUtils.removeStart(withoutZeros, zero); - } - - if (withoutZeros.trim().length() == 0) { - withoutZeros = zero; - } - - } else { - withoutZeros = str; - } - } - - return withoutZeros; - } - - /** - *

- * Remove a acentuação do texto, que inclui os acentos: - *

    - *
  • Agudo. ex.: á
  • - *
  • Grave. ex.: à
  • - *
  • Til. ex.: ã
  • - *
  • Trema. ex.: ä
  • - *
  • Circunflexo. ex.: â
  • - *
- * e o Cedilha (ç). - *

- *

- * Os acentos são removidos tanto para letras minúsculas como para letras - * maiúsculas. - *

- * - * @param value - * String com os caracteres a serem removidos. - * @return String sem acentuação. - * @since 0.2 - */ - public static String eliminateAccent(final String value) { - - String modifiedValue = value; - - // Para ç e Ç - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E7', 'c'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C7', 'C'); - - // Para à, á, â, ã e ä - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E0', 'a'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E1', 'a'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E2', 'a'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E3', 'a'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E4', 'a'); - - // Para è, é, ê e ë - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E8', 'e'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E9', 'e'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EA', 'e'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EB', 'e'); - - // Para ì, í, î e ï - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EC', 'i'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00ED', 'i'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EE', 'i'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EF', 'i'); - - // Para ò, ó, ô, õ e ö - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F2', 'o'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F3', 'o'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F4', 'o'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F5', 'o'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F6', 'o'); - - // Para ù, ú, û e ü - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F9', 'u'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FA', 'u'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FB', 'u'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FC', 'u'); - - // Para À, Á, Â, Ã e Ä - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C0', 'A'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C1', 'A'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C2', 'A'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C3', 'A'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C4', 'A'); - - // Para È, É, Ê e Ë - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C8', 'E'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C9', 'E'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CA', 'E'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CB', 'E'); - - // Para Ì, Í, Î e Ï - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CC', 'I'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CD', 'I'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CE', 'I'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CF', 'I'); - - // Para Ò, Ó, Ô, Õ e Ö - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D2', 'O'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D3', 'O'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D4', 'O'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D5', 'O'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D6', 'O'); - - // Para Ù, Ú, Û e Ü - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D9', 'U'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DA', 'U'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DB', 'U'); - modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DC', 'U'); - - return modifiedValue; - } - - /** - *

- * Verifica se a String passada por parâmetro não é null, - * não é vazia (StringUtils.EMPTY) e não possui apenas espaços em branco. - *

- *

- * Lança exceção, com a mensagem passada por parâmetro (segundo parâmetro String), - * caso não preencha estes requisitos. - *

- * - * @param value - String analisada - * - * @throws NullPointerException - Caso a string seja null. - * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaços em branco. - * - * @since 0.2 - */ - public static void checkNotBlank(String value, String message) { - checkNotBlank(value, message, message); - } - - /** - *

- * Verifica se a String passada por parâmetro não é null, - * não é vazia (StringUtils.EMPTY) e não possui apenas espaços em branco. - * Lança exceção caso não preencha estes requisitos. - *

- * - * @param value - String analisada - * - * @throws NullPointerException - Caso a string seja null. - * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaços em branco. - * - * @since 0.2 - */ - public static void checkNotBlank(String value) { - checkNotBlank(value, "String nula", "Valor inválido. String vazia ou contendo apenas espaços em brancos"); - } -} diff --git a/src/org/jrimum/utilix/TextStream.java b/src/org/jrimum/utilix/TextStream.java deleted file mode 100644 index 8add4e7..0000000 --- a/src/org/jrimum/utilix/TextStream.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2008 JRimum Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by - * applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - * OF ANY KIND, either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * Created at: 30/03/2008 - 18:17:20 - * - * ================================================================================ - * - * Direitos autorais 2008 JRimum Project - * - * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar - * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma - * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que - * haja exigência legal ou acordo por escrito, a distribuição de software sob - * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER - * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a - * reger permissões e limitações sob esta LICENÇA. - * - * Criado em: 30/03/2008 - 18:17:20 - * - */ - - -package org.jrimum.utilix; - -/** - * - *

Interface usada para objetos com serviços de leitura e escrita de textos.

- * - * - * @author Gilmar P.S.L - * @author Misael Barreto - * @author Rômulo Augusto - * @author Nordeste Fomento - * Mercantil - * - * @since 0.2 - * - * @version 0.2 - */ -public interface TextStream extends ReadWriteStream { - -} From c118142bee7c21204740d1f9e3f3d4b53cc3ca7a Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Wed, 21 Jul 2010 03:31:33 +0000 Subject: [PATCH 04/87] =?UTF-8?q?'''PADRONIZA=C3=87=C3=83O=20DE=20NOMES'''?= =?UTF-8?q?=20=20*=20Remanecentes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jrimum/texgit/IFlatFile.java | 33 ------------------- src/main/java/org/jrimum/texgit/IRecord.java | 16 --------- 2 files changed, 49 deletions(-) delete mode 100644 src/main/java/org/jrimum/texgit/IFlatFile.java delete mode 100644 src/main/java/org/jrimum/texgit/IRecord.java diff --git a/src/main/java/org/jrimum/texgit/IFlatFile.java b/src/main/java/org/jrimum/texgit/IFlatFile.java deleted file mode 100644 index c3c44ac..0000000 --- a/src/main/java/org/jrimum/texgit/IFlatFile.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.jrimum.texgit; - -import java.util.Collection; - -public interface IFlatFile extends TextFileStream { - - // Registros individuais - - public G createRecord(String idType); - - public void addRecord(G record); - - public G getRecord(String idName); - - public G removeRecord(String idName); - - // Grupos de Registros (Registros que se repetem) - - public void addRecords(String idName, Collection records); - - public void setRecords(String idName, Collection records); - - public Collection getRecords(String idName); - - // Todos os Registros - - public void addAllRecords(Collection records); - - public void setAllRecords(Collection records); - - public Collection getAllRecords(); - -} diff --git a/src/main/java/org/jrimum/texgit/IRecord.java b/src/main/java/org/jrimum/texgit/IRecord.java deleted file mode 100644 index bdc59d0..0000000 --- a/src/main/java/org/jrimum/texgit/IRecord.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.jrimum.texgit; - -import java.util.List; - - - -public interface IRecord{ - - public void setValue(String fieldName, G value); - - public G getValue(String fieldName); - - public void addInnerRecord(IRecord record); - - public List getInnerRecords(); -} From b7a621a55e7b04f5ac008032bfc344d924a88bc9 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sat, 31 Jul 2010 21:05:54 +0000 Subject: [PATCH 05/87] =?UTF-8?q?'''REVIS=C3=83O'''=20=20*=20Corre=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20testes=20=20*=20Re-Distribui=C3=A7=C3=A3o=20entr?= =?UTF-8?q?e=20pacotes=20e=20projetos=20para=20melhorar=20a=20coes=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jrimum/texgit/type/AbstractStringOfFields.java | 2 +- src/main/java/org/jrimum/texgit/type/Field.java | 2 +- .../java/org/jrimum/texgit/type/component/CommonFiller.java | 2 +- src/main/java/org/jrimum/texgit/type/component/Field.java | 2 +- src/main/java/org/jrimum/texgit/type/component/Filler.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index c491480..445dc13 100644 --- a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -8,7 +8,7 @@ import org.apache.commons.lang.StringUtils; import org.jrimum.utilix.ObjectUtil; -import org.jrimum.utilix.TextStream; +import org.jrimum.utilix.text.TextStream; @SuppressWarnings("serial") public abstract class AbstractStringOfFields> implements TextStream, List, Cloneable{ diff --git a/src/main/java/org/jrimum/texgit/type/Field.java b/src/main/java/org/jrimum/texgit/type/Field.java index 10666b9..6034412 100644 --- a/src/main/java/org/jrimum/texgit/type/Field.java +++ b/src/main/java/org/jrimum/texgit/type/Field.java @@ -2,7 +2,7 @@ import java.text.Format; -import org.jrimum.utilix.TextStream; +import org.jrimum.utilix.text.TextStream; public interface Field extends TextStream, Cloneable{ diff --git a/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java b/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java index a0c4f70..0c4d02c 100644 --- a/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java +++ b/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java @@ -1,6 +1,6 @@ package org.jrimum.texgit.type.component; -import org.jrimum.utilix.StringUtil; +import org.jrimum.utilix.text.StringUtil; public enum CommonFiller { diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index a88175f..03f7867 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -15,7 +15,7 @@ import org.apache.commons.lang.StringUtils; import org.jrimum.utilix.DateUtil; import org.jrimum.utilix.ObjectUtil; -import org.jrimum.utilix.TextStream; +import org.jrimum.utilix.text.TextStream; @SuppressWarnings("serial") public class Field implements org.jrimum.texgit.type.Field{ diff --git a/src/main/java/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java index bb53608..f708c38 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -35,7 +35,7 @@ import java.io.Serializable; import org.apache.commons.lang.StringUtils; -import org.jrimum.utilix.TextStream; +import org.jrimum.utilix.text.TextStream; /** *

From f541ba1a97435f4bcc40707e1c5795a224f278e4 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sun, 1 Aug 2010 00:17:16 +0000 Subject: [PATCH 06/87] =?UTF-8?q?'''REVIS=C3=83O'''=20=20*=20Organiza?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20imports?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/language/MetaFiller.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/jrimum/texgit/language/MetaFiller.java b/src/main/java/org/jrimum/texgit/language/MetaFiller.java index c2c38a5..bd32200 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaFiller.java +++ b/src/main/java/org/jrimum/texgit/language/MetaFiller.java @@ -12,6 +12,8 @@ import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlType; +import org.jrimum.texgit.type.component.Side; + /** * * From 128dab8887f257429db665e094ea23aca8cb3478 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sun, 1 Aug 2010 05:22:08 +0000 Subject: [PATCH 07/87] =?UTF-8?q?'''REVIS=C3=83O'''=20=20*=20Re-Distribui?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20m=C3=A9todos=20entre=20pacotes=20e=20class?= =?UTF-8?q?es=20do=20utilix=20para=20melhorar=20a=20coes=C3=A3o=20=20*=20O?= =?UTF-8?q?rganiza=C3=A7=C3=A3o=20de=20imports=20=20*=20Organiza=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20testes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/Texgit.java | 2 +- .../org/jrimum/texgit/engine/Builder4FixedField.java | 2 +- .../org/jrimum/texgit/engine/Builder4FlatFile.java | 2 +- .../org/jrimum/texgit/engine/Builder4Record.java | 4 ++-- .../org/jrimum/texgit/engine/Factory4Record.java | 2 +- .../java/org/jrimum/texgit/engine/TGXMLReader.java | 2 +- .../jrimum/texgit/type/AbstractStringOfFields.java | 6 +++--- .../jrimum/texgit/type/component/BlockOfFields.java | 12 ++++++------ .../java/org/jrimum/texgit/type/component/Field.java | 6 +++--- .../org/jrimum/texgit/type/component/Filler.java | 2 +- .../org/jrimum/texgit/type/component/FixedField.java | 6 +++--- .../org/jrimum/texgit/type/component/FlatFile.java | 4 ++-- .../org/jrimum/texgit/type/component/Record.java | 4 ++-- 13 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/Texgit.java b/src/main/java/org/jrimum/texgit/Texgit.java index 863c2d3..dc9c90d 100644 --- a/src/main/java/org/jrimum/texgit/Texgit.java +++ b/src/main/java/org/jrimum/texgit/Texgit.java @@ -1,7 +1,7 @@ package org.jrimum.texgit; import static org.apache.commons.lang.StringUtils.isNotBlank; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import java.io.File; diff --git a/src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java b/src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java index 2b1209a..0f54e04 100644 --- a/src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java +++ b/src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java @@ -3,7 +3,7 @@ import static org.apache.commons.lang.StringUtils.EMPTY; import static org.apache.commons.lang.StringUtils.countMatches; import static org.apache.commons.lang.StringUtils.isNotBlank; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import java.math.BigDecimal; import java.text.DateFormat; diff --git a/src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java b/src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java index 61da335..b465a10 100644 --- a/src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java +++ b/src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java @@ -1,6 +1,6 @@ package org.jrimum.texgit.engine; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import java.util.ArrayList; import java.util.HashSet; diff --git a/src/main/java/org/jrimum/texgit/engine/Builder4Record.java b/src/main/java/org/jrimum/texgit/engine/Builder4Record.java index e701652..e414459 100644 --- a/src/main/java/org/jrimum/texgit/engine/Builder4Record.java +++ b/src/main/java/org/jrimum/texgit/engine/Builder4Record.java @@ -1,7 +1,7 @@ package org.jrimum.texgit.engine; -import static org.jrimum.utilix.ObjectUtil.isNotNull; -import static org.jrimum.utilix.ObjectUtil.isNull; +import static org.jrimum.utilix.Objects.isNotNull; +import static org.jrimum.utilix.Objects.isNull; import java.util.ArrayList; import java.util.HashSet; diff --git a/src/main/java/org/jrimum/texgit/engine/Factory4Record.java b/src/main/java/org/jrimum/texgit/engine/Factory4Record.java index 01bb908..6cbb6ee 100644 --- a/src/main/java/org/jrimum/texgit/engine/Factory4Record.java +++ b/src/main/java/org/jrimum/texgit/engine/Factory4Record.java @@ -1,7 +1,7 @@ package org.jrimum.texgit.engine; import static org.apache.commons.lang.StringUtils.isNotBlank; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import java.util.HashMap; import java.util.List; diff --git a/src/main/java/org/jrimum/texgit/engine/TGXMLReader.java b/src/main/java/org/jrimum/texgit/engine/TGXMLReader.java index b28141a..be65813 100644 --- a/src/main/java/org/jrimum/texgit/engine/TGXMLReader.java +++ b/src/main/java/org/jrimum/texgit/engine/TGXMLReader.java @@ -1,7 +1,7 @@ package org.jrimum.texgit.engine; import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import java.io.File; import java.io.FileInputStream; diff --git a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index 445dc13..ded7a92 100644 --- a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -7,7 +7,7 @@ import java.util.ListIterator; import org.apache.commons.lang.StringUtils; -import org.jrimum.utilix.ObjectUtil; +import org.jrimum.utilix.Objects; import org.jrimum.utilix.text.TextStream; @SuppressWarnings("serial") @@ -31,7 +31,7 @@ public AbstractStringOfFields() { */ public AbstractStringOfFields(Integer size) { - ObjectUtil.checkNotNull(size, "size"); + Objects.checkNotNull(size, "size"); if (size > 0) { fields = new ArrayList(size); @@ -82,7 +82,7 @@ public String write() { StringBuilder lineOfFields = new StringBuilder(StringUtils.EMPTY); - ObjectUtil.checkNotNull(fields, "fields"); + Objects.checkNotNull(fields, "fields"); for (G field : fields) { lineOfFields.append(field.write()); diff --git a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index 5d651cb..46cb27a 100644 --- a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -1,11 +1,11 @@ package org.jrimum.texgit.type.component; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import org.jrimum.texgit.type.AbstractStringOfFields; import org.jrimum.texgit.type.FixedLength; import org.jrimum.texgit.type.FixedSize; -import org.jrimum.utilix.ObjectUtil; +import org.jrimum.utilix.Objects; @SuppressWarnings("serial") public class BlockOfFields extends AbstractStringOfFields> implements FixedSize, FixedLength{ @@ -42,7 +42,7 @@ public BlockOfFields(Integer length, Integer size) { super(size); - ObjectUtil.checkNotNull(length, "length"); + Objects.checkNotNull(length, "length"); if (length > 0) { @@ -63,9 +63,9 @@ public BlockOfFields clone() throws CloneNotSupportedException { @Override public void read(String lineOfFields) { - ObjectUtil.checkNotNull(lineOfFields, "lineOfFields"); + Objects.checkNotNull(lineOfFields, "lineOfFields"); - ObjectUtil.checkNotNull(getFields(), "fields"); + Objects.checkNotNull(getFields(), "fields"); if (isSizeAsDefinaed() && isLengthWithDefinaed(lineOfFields.length())) { @@ -84,7 +84,7 @@ public void read(String lineOfFields) { @Override public String write() { - ObjectUtil.checkNotNull(getFields(), "fields"); + Objects.checkNotNull(getFields(), "fields"); String str = null; diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index 03f7867..24b4743 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -2,7 +2,7 @@ import static org.apache.commons.lang.StringUtils.isBlank; import static org.apache.commons.lang.StringUtils.isNumeric; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -14,7 +14,7 @@ import org.apache.commons.lang.StringUtils; import org.jrimum.utilix.DateUtil; -import org.jrimum.utilix.ObjectUtil; +import org.jrimum.utilix.Objects; import org.jrimum.utilix.text.TextStream; @SuppressWarnings("serial") @@ -107,7 +107,7 @@ public Field clone() throws CloneNotSupportedException { public void read(String str) { - ObjectUtil.checkNotNull(str, "String Inválida"); + Objects.checkNotNull(str, "String Inválida"); if (this.value instanceof TextStream) { diff --git a/src/main/java/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java index f708c38..3f82e7e 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -30,7 +30,7 @@ package org.jrimum.texgit.type.component; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import java.io.Serializable; diff --git a/src/main/java/org/jrimum/texgit/type/component/FixedField.java b/src/main/java/org/jrimum/texgit/type/component/FixedField.java index c09cabe..0a56244 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/component/FixedField.java @@ -1,10 +1,10 @@ package org.jrimum.texgit.type.component; -import static org.jrimum.utilix.ObjectUtil.isNotNull; +import static org.jrimum.utilix.Objects.isNotNull; import java.text.Format; -import org.jrimum.utilix.ObjectUtil; +import org.jrimum.utilix.Objects; @@ -87,7 +87,7 @@ public FixedField clone() throws CloneNotSupportedException { @Override public void read(String str) { - ObjectUtil.checkNotNull(str, "String Inválida"); + Objects.checkNotNull(str, "String Inválida"); if (str.length() == getFixedLength()) { super.read(str); diff --git a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java index 825932e..05220f3 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java @@ -1,8 +1,8 @@ package org.jrimum.texgit.type.component; import static org.apache.commons.lang.StringUtils.isNotBlank; -import static org.jrimum.utilix.ObjectUtil.isNotNull; -import static org.jrimum.utilix.ObjectUtil.isNull; +import static org.jrimum.utilix.Objects.isNotNull; +import static org.jrimum.utilix.Objects.isNull; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/org/jrimum/texgit/type/component/Record.java b/src/main/java/org/jrimum/texgit/type/component/Record.java index 0d5c092..6f527a7 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Record.java +++ b/src/main/java/org/jrimum/texgit/type/component/Record.java @@ -1,8 +1,8 @@ package org.jrimum.texgit.type.component; import static org.apache.commons.lang.StringUtils.isNotBlank; -import static org.jrimum.utilix.ObjectUtil.isNotNull; -import static org.jrimum.utilix.ObjectUtil.isNull; +import static org.jrimum.utilix.Objects.isNotNull; +import static org.jrimum.utilix.Objects.isNull; import java.util.ArrayList; import java.util.List; From c7f5b1a97d58fcb93bd1936f8307f70d7274612f Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sun, 1 Aug 2010 05:55:23 +0000 Subject: [PATCH 08/87] =?UTF-8?q?'''REVIS=C3=83O'''=20=20*=20Rename=20para?= =?UTF-8?q?=20o=20padr=C3=A3o=20Object(s)=20=20*=20Re-Distribui=C3=A7?= =?UTF-8?q?=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jrimum/texgit/type/component/CommonFiller.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java b/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java index 0c4d02c..6856532 100644 --- a/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java +++ b/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java @@ -1,6 +1,6 @@ package org.jrimum.texgit.type.component; -import org.jrimum.utilix.text.StringUtil; +import org.jrimum.utilix.text.Strings; public enum CommonFiller { @@ -18,12 +18,12 @@ public enum CommonFiller { /** * Filler padrão para preenchimento com espaços em branco a esquerda. */ - WHITE_SPACE_LEFT(new Filler(StringUtil.WHITE_SPACE, Side.LEFT)), + WHITE_SPACE_LEFT(new Filler(Strings.WHITE_SPACE, Side.LEFT)), /** * Filler padrão para preenchimento com espaços em branco a direita. */ - WHITE_SPACE_RIGHT(new Filler(StringUtil.WHITE_SPACE, Side.RIGHT)); + WHITE_SPACE_RIGHT(new Filler(Strings.WHITE_SPACE, Side.RIGHT)); private Filler instanceEnumFiller; From 03ef19ec3692ac0c53359c4b41282fe6b6c496c9 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sun, 1 Aug 2010 05:57:30 +0000 Subject: [PATCH 09/87] =?UTF-8?q?'''REVIS=C3=83O'''=20=20*=20Rename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/FlatFile.java | 2 +- src/main/java/org/jrimum/texgit/TextListStream.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/jrimum/texgit/TextListStream.java diff --git a/src/main/java/org/jrimum/texgit/FlatFile.java b/src/main/java/org/jrimum/texgit/FlatFile.java index 865dba5..a470a51 100644 --- a/src/main/java/org/jrimum/texgit/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/FlatFile.java @@ -2,7 +2,7 @@ import java.util.Collection; -public interface FlatFile extends TextFileStream { +public interface FlatFile extends TextListStream { // Registros individuais diff --git a/src/main/java/org/jrimum/texgit/TextListStream.java b/src/main/java/org/jrimum/texgit/TextListStream.java new file mode 100644 index 0000000..2d98c44 --- /dev/null +++ b/src/main/java/org/jrimum/texgit/TextListStream.java @@ -0,0 +1,9 @@ +package org.jrimum.texgit; + +import java.util.List; + +import org.jrimum.utilix.ReadWriteStream; + +public interface TextListStream extends ReadWriteStream> { + +} From af24443ce6813365ed13b2aa588bd9e6765b9f76 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sun, 1 Aug 2010 06:07:10 +0000 Subject: [PATCH 10/87] =?UTF-8?q?'''REVIS=C3=83O'''=20=20*=20Rename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/Texgit.java | 4 ++-- src/main/java/org/jrimum/texgit/TextFileStream.java | 9 --------- ...uilder4FixedField.java => FixedFieldBuilder.java} | 2 +- .../{Builder4FlatFile.java => FlatFileBuilder.java} | 4 ++-- .../{Builder4Record.java => RecordBuilder.java} | 12 ++++++------ .../{Factory4Record.java => RecordFactory.java} | 7 +++---- ...geException.java => TexgitLanguageException.java} | 10 +++++----- .../engine/{TGManager.java => TexgitManager.java} | 6 +++--- ...hemaValidator.java => TexgitSchemaValidator.java} | 2 +- .../{TGXMLReader.java => TexgitXmlReader.java} | 10 +++++----- 10 files changed, 28 insertions(+), 38 deletions(-) delete mode 100644 src/main/java/org/jrimum/texgit/TextFileStream.java rename src/main/java/org/jrimum/texgit/engine/{Builder4FixedField.java => FixedFieldBuilder.java} (95%) rename src/main/java/org/jrimum/texgit/engine/{Builder4FlatFile.java => FlatFileBuilder.java} (87%) rename src/main/java/org/jrimum/texgit/engine/{Builder4Record.java => RecordBuilder.java} (83%) rename src/main/java/org/jrimum/texgit/engine/{Factory4Record.java => RecordFactory.java} (82%) rename src/main/java/org/jrimum/texgit/engine/{TGLanguageException.java => TexgitLanguageException.java} (50%) rename src/main/java/org/jrimum/texgit/engine/{TGManager.java => TexgitManager.java} (74%) rename src/main/java/org/jrimum/texgit/engine/{TGSchemaValidator.java => TexgitSchemaValidator.java} (88%) rename src/main/java/org/jrimum/texgit/engine/{TGXMLReader.java => TexgitXmlReader.java} (82%) diff --git a/src/main/java/org/jrimum/texgit/Texgit.java b/src/main/java/org/jrimum/texgit/Texgit.java index dc9c90d..b9e682e 100644 --- a/src/main/java/org/jrimum/texgit/Texgit.java +++ b/src/main/java/org/jrimum/texgit/Texgit.java @@ -5,7 +5,7 @@ import java.io.File; -import org.jrimum.texgit.engine.TGManager; +import org.jrimum.texgit.engine.TexgitManager; @@ -17,7 +17,7 @@ public static final FlatFile createFlatFile(File xmlDef)throws TexgitExc FlatFile iFlatFile = null; if (isNotNull(xmlDef)) - iFlatFile = TGManager.buildFlatFile(xmlDef); + iFlatFile = TexgitManager.buildFlatFile(xmlDef); return iFlatFile; } diff --git a/src/main/java/org/jrimum/texgit/TextFileStream.java b/src/main/java/org/jrimum/texgit/TextFileStream.java deleted file mode 100644 index 1657951..0000000 --- a/src/main/java/org/jrimum/texgit/TextFileStream.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.jrimum.texgit; - -import java.util.List; - -import org.jrimum.utilix.ReadWriteStream; - -public interface TextFileStream extends ReadWriteStream> { - -} diff --git a/src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java similarity index 95% rename from src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java rename to src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java index 0f54e04..c051c23 100644 --- a/src/main/java/org/jrimum/texgit/engine/Builder4FixedField.java +++ b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java @@ -23,7 +23,7 @@ import org.jrimum.texgit.type.component.Side; import org.jrimum.utilix.DateUtil; -class Builder4FixedField { +class FixedFieldBuilder { static FixedField build(MetaField metaField) { diff --git a/src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java b/src/main/java/org/jrimum/texgit/engine/FlatFileBuilder.java similarity index 87% rename from src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java rename to src/main/java/org/jrimum/texgit/engine/FlatFileBuilder.java index b465a10..6998375 100644 --- a/src/main/java/org/jrimum/texgit/engine/Builder4FlatFile.java +++ b/src/main/java/org/jrimum/texgit/engine/FlatFileBuilder.java @@ -13,7 +13,7 @@ -public class Builder4FlatFile { +public class FlatFileBuilder { static FlatFile build(MetaFlatFile mFlatFile) { @@ -21,7 +21,7 @@ static FlatFile build(MetaFlatFile mFlatFile) { List metaRecords = mFlatFile.getGroupOfRecords().getRecords(); - ff = new FlatFile(new Factory4Record(metaRecords)); + ff = new FlatFile(new RecordFactory(metaRecords)); Set repitables = new HashSet(); diff --git a/src/main/java/org/jrimum/texgit/engine/Builder4Record.java b/src/main/java/org/jrimum/texgit/engine/RecordBuilder.java similarity index 83% rename from src/main/java/org/jrimum/texgit/engine/Builder4Record.java rename to src/main/java/org/jrimum/texgit/engine/RecordBuilder.java index e414459..01c972d 100644 --- a/src/main/java/org/jrimum/texgit/engine/Builder4Record.java +++ b/src/main/java/org/jrimum/texgit/engine/RecordBuilder.java @@ -15,7 +15,7 @@ -class Builder4Record { +class RecordBuilder { @SuppressWarnings("unchecked") static Record build(MetaRecord metaRecord) { @@ -46,12 +46,12 @@ static Record build(MetaRecord metaRecord) { * e nao de 0 a X. */ if(isNotNull(id)){ - record.setIdType((FixedField) Builder4FixedField.build(id)); + record.setIdType((FixedField) FixedFieldBuilder.build(id)); record.set(id.getPosition()-1, record.getIdType()); } if(isNotNull(sequencialNumber)){ - record.setSequencialNumber((FixedField) Builder4FixedField.build(sequencialNumber)); + record.setSequencialNumber((FixedField) FixedFieldBuilder.build(sequencialNumber)); record.set(sequencialNumber.getPosition()-1,record.getSequencialNumber()); } @@ -64,12 +64,12 @@ static Record build(MetaRecord metaRecord) { for(MetaField mField : fields){ if(isNull(record.get(fields.indexOf(mField)))) - record.set(fields.indexOf(mField), Builder4FixedField.build(mField)); + record.set(fields.indexOf(mField), FixedFieldBuilder.build(mField)); else if(isNull(record.get(fields.indexOf(mField)+1))) - record.set(fields.indexOf(mField) + 1, Builder4FixedField.build(mField)); + record.set(fields.indexOf(mField) + 1, FixedFieldBuilder.build(mField)); else - record.set(fields.indexOf(mField) + 2, Builder4FixedField.build(mField)); + record.set(fields.indexOf(mField) + 2, FixedFieldBuilder.build(mField)); } // innerRecords diff --git a/src/main/java/org/jrimum/texgit/engine/Factory4Record.java b/src/main/java/org/jrimum/texgit/engine/RecordFactory.java similarity index 82% rename from src/main/java/org/jrimum/texgit/engine/Factory4Record.java rename to src/main/java/org/jrimum/texgit/engine/RecordFactory.java index 6cbb6ee..a215b41 100644 --- a/src/main/java/org/jrimum/texgit/engine/Factory4Record.java +++ b/src/main/java/org/jrimum/texgit/engine/RecordFactory.java @@ -9,15 +9,14 @@ import org.jrimum.texgit.language.MetaRecord; import org.jrimum.texgit.type.component.Record; -import org.jrimum.texgit.type.component.RecordFactory; -public class Factory4Record implements RecordFactory { +public class RecordFactory implements org.jrimum.texgit.type.component.RecordFactory { private Map name_record; - Factory4Record(List metaRecords) { + RecordFactory(List metaRecords) { if (isNotNull(metaRecords)) { if (!metaRecords.isEmpty()) { @@ -62,7 +61,7 @@ public Record create(String name) { if (isNotBlank(name)) if (name_record.containsKey(name)) - record = Builder4Record.build(name_record.get(name)); + record = RecordBuilder.build(name_record.get(name)); return record; } diff --git a/src/main/java/org/jrimum/texgit/engine/TGLanguageException.java b/src/main/java/org/jrimum/texgit/engine/TexgitLanguageException.java similarity index 50% rename from src/main/java/org/jrimum/texgit/engine/TGLanguageException.java rename to src/main/java/org/jrimum/texgit/engine/TexgitLanguageException.java index 6c322cf..923b21b 100644 --- a/src/main/java/org/jrimum/texgit/engine/TGLanguageException.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitLanguageException.java @@ -3,12 +3,12 @@ import org.jrimum.texgit.TexgitException; @SuppressWarnings("serial") -public class TGLanguageException extends TexgitException { +public class TexgitLanguageException extends TexgitException { /** * */ - public TGLanguageException() { + public TexgitLanguageException() { super(); } @@ -17,7 +17,7 @@ public TGLanguageException() { * @param arg0 * @param arg1 */ - public TGLanguageException(String arg0, Throwable arg1) { + public TexgitLanguageException(String arg0, Throwable arg1) { super(arg0, arg1); } @@ -25,7 +25,7 @@ public TGLanguageException(String arg0, Throwable arg1) { /** * @param arg0 */ - public TGLanguageException(String arg0) { + public TexgitLanguageException(String arg0) { super(arg0); } @@ -33,7 +33,7 @@ public TGLanguageException(String arg0) { /** * @param arg0 */ - public TGLanguageException(Throwable arg0) { + public TexgitLanguageException(Throwable arg0) { super(arg0); } diff --git a/src/main/java/org/jrimum/texgit/engine/TGManager.java b/src/main/java/org/jrimum/texgit/engine/TexgitManager.java similarity index 74% rename from src/main/java/org/jrimum/texgit/engine/TGManager.java rename to src/main/java/org/jrimum/texgit/engine/TexgitManager.java index cfacde5..3d9156e 100644 --- a/src/main/java/org/jrimum/texgit/engine/TGManager.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitManager.java @@ -8,7 +8,7 @@ -public class TGManager { +public class TexgitManager { @SuppressWarnings("unchecked") public static org.jrimum.texgit.FlatFile buildFlatFile(File xmlDef) { @@ -17,9 +17,9 @@ public static org.jrimum.texgit.FlatFile buildFlatFile try { - MetaTexgit tgMeta = TGXMLReader.parse(xmlDef); + MetaTexgit tgMeta = TexgitXmlReader.parse(xmlDef); - FlatFile ff = Builder4FlatFile.build(tgMeta.getFlatFile()); + FlatFile ff = FlatFileBuilder.build(tgMeta.getFlatFile()); iFlatFile = ff; diff --git a/src/main/java/org/jrimum/texgit/engine/TGSchemaValidator.java b/src/main/java/org/jrimum/texgit/engine/TexgitSchemaValidator.java similarity index 88% rename from src/main/java/org/jrimum/texgit/engine/TGSchemaValidator.java rename to src/main/java/org/jrimum/texgit/engine/TexgitSchemaValidator.java index dd8c0e2..be769ff 100644 --- a/src/main/java/org/jrimum/texgit/engine/TGSchemaValidator.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitSchemaValidator.java @@ -4,7 +4,7 @@ import javax.xml.bind.ValidationEventHandler; import javax.xml.bind.ValidationEventLocator; -class TGSchemaValidator implements ValidationEventHandler { +class TexgitSchemaValidator implements ValidationEventHandler { public boolean handleEvent(ValidationEvent event) { diff --git a/src/main/java/org/jrimum/texgit/engine/TGXMLReader.java b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java similarity index 82% rename from src/main/java/org/jrimum/texgit/engine/TGXMLReader.java rename to src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java index be65813..a01d385 100644 --- a/src/main/java/org/jrimum/texgit/engine/TGXMLReader.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java @@ -20,7 +20,7 @@ -class TGXMLReader { +class TexgitXmlReader { public static MetaTexgit parse(File xmlDef) throws TexgitException { @@ -43,22 +43,22 @@ public static MetaTexgit parse(File xmlDef) throws TexgitException { aUnmarshaller.setSchema(schema); - aUnmarshaller.setEventHandler(new TGSchemaValidator()); + aUnmarshaller.setEventHandler(new TexgitSchemaValidator()); txg = (MetaTexgit) aUnmarshaller.unmarshal(new FileInputStream( xmlDef)); } catch (SAXException e) { - throw new TGLanguageException(e); + throw new TexgitLanguageException(e); } catch (JAXBException e) { - throw new TGLanguageException(e); + throw new TexgitLanguageException(e); } catch (FileNotFoundException e) { - throw new TGLanguageException(e); + throw new TexgitLanguageException(e); } } From d4d6a5d8e27d5bf3d5a57416a0881f70e9be0927 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sun, 1 Aug 2010 06:42:57 +0000 Subject: [PATCH 11/87] =?UTF-8?q?'''REVIS=C3=83O'''=20=20*=20Security=20?= =?UTF-8?q?=20*=20Multithreading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jrimum/texgit/engine/FixedFieldBuilder.java | 10 +++++++--- .../java/org/jrimum/texgit/type/component/Field.java | 6 ++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java index c051c23..01016e1 100644 --- a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java @@ -112,11 +112,15 @@ private static FixedField getInstance(MetaField metaField) break; case DATE: FixedField fDTE = new FixedField(); - if (isNotBlank(metaField.getValue())) + if (isNotBlank(metaField.getValue())){ + fDTE.setValue(DateFormat.class.cast(formatter).parse( metaField.getValue())); - else - fDTE.setValue(DateUtil.DATE_NULL); + } + else{ + + fDTE.setValue(DateUtil.invalidDate()); + } fField = fDTE; break; } diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index 24b4743..11025ed 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -175,7 +175,7 @@ private void readDateField(String str) { if(isBlank(str)){ if(isBlankAccepted()) - value = (G) DateUtil.DATE_NULL; + value = (G) DateUtil.invalidDate(); else new IllegalArgumentException("Campo data vazio não permitido: ["+str+"]"); } @@ -256,8 +256,10 @@ private String writeDateField(){ Date dateValue = (Date) value; - if (dateValue.compareTo(DateUtil.DATE_NULL) != 0) + if (DateUtil.equalsInvalidDate(dateValue)){ + str = formatter.format(dateValue); + } return str; } From 896feae8597dc66cbf7f3c817b5d204e7648c1ae Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 2 Aug 2010 03:43:04 +0000 Subject: [PATCH 12/87] =?UTF-8?q?'''REVIS=C3=83O'''=20=20*=20Rename=20=20*?= =?UTF-8?q?=20Documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jrimum/texgit/engine/FixedFieldBuilder.java | 4 ++-- src/main/java/org/jrimum/texgit/type/component/Field.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java index 01016e1..36b6681 100644 --- a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java @@ -21,7 +21,7 @@ import org.jrimum.texgit.type.component.Filler; import org.jrimum.texgit.type.component.FixedField; import org.jrimum.texgit.type.component.Side; -import org.jrimum.utilix.DateUtil; +import org.jrimum.utilix.Dates; class FixedFieldBuilder { @@ -119,7 +119,7 @@ private static FixedField getInstance(MetaField metaField) } else{ - fDTE.setValue(DateUtil.invalidDate()); + fDTE.setValue(Dates.invalidDate()); } fField = fDTE; break; diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index 11025ed..6793273 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -13,7 +13,7 @@ import java.util.Date; import org.apache.commons.lang.StringUtils; -import org.jrimum.utilix.DateUtil; +import org.jrimum.utilix.Dates; import org.jrimum.utilix.Objects; import org.jrimum.utilix.text.TextStream; @@ -175,7 +175,7 @@ private void readDateField(String str) { if(isBlank(str)){ if(isBlankAccepted()) - value = (G) DateUtil.invalidDate(); + value = (G) Dates.invalidDate(); else new IllegalArgumentException("Campo data vazio não permitido: ["+str+"]"); } @@ -256,7 +256,7 @@ private String writeDateField(){ Date dateValue = (Date) value; - if (DateUtil.equalsInvalidDate(dateValue)){ + if (Dates.equalsInvalidDate(dateValue)){ str = formatter.format(dateValue); } From 25acbd6342a814c6ae00717b028e3b340c623203 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 03:59:00 +0000 Subject: [PATCH 13/87] =?UTF-8?q?Desnecess=C3=A1rio,=20em=20caso=20de=20ne?= =?UTF-8?q?cessidade=20usar=20[http://commons.apache.org/io/=20Apache=20Co?= =?UTF-8?q?mmons=20IO]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jrimum/texgit/util/FileUtil.java | 355 ------------------ 1 file changed, 355 deletions(-) delete mode 100644 src/main/java/org/jrimum/texgit/util/FileUtil.java diff --git a/src/main/java/org/jrimum/texgit/util/FileUtil.java b/src/main/java/org/jrimum/texgit/util/FileUtil.java deleted file mode 100644 index 28a43d2..0000000 --- a/src/main/java/org/jrimum/texgit/util/FileUtil.java +++ /dev/null @@ -1,355 +0,0 @@ -package org.jrimum.texgit.util; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang.StringUtils; - - -/** - * - *

- * DEFINIÇÃO DA CLASSE - *

- * - *

- * OBJETIVO/PROPÓSITO - *

- * - *

- * EXEMPLO: - *

- * - * @author Gilmar P.S.L. - * - * @since - * - * @version - */ - -public class FileUtil { - - public static final String ENTER = "\r\n"; - - - - /** - *

- * Método responsável pela leitura de qualqer arquivo. Cada linha do arquivo - * corresponde a um item da lista retornada. Caso tenha lido algum arquivo - * ou não houve poblema na leitura, retorna List senão null - *

- * - * @param pathName - * @return sucess - * - * @since - */ - - public static List read(String pathName) { - - if (pathName != null) { - - try { - - return readFree(new File(pathName)); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - return null; - } - - /** - *

- * Método responável pela leitura de qualqer arquivo. Cada linha do arquivo - * corresponde a um item da lista retornada. Caso tenha lido algum arquivo - * ou não houve poblema na leitura, retorna List senão null. - *

- * - * @param file - * @return - * - * @since - */ - - public static List read(File file) { - - if (file != null) { - - try { - - return readFree(file); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - return null; - } - - private static List readFree(File file) throws IOException { - - List archive = new ArrayList(); - - BufferedReader reader = new BufferedReader(new FileReader(file)); - - String s; - - do { - s = reader.readLine(); - if (s != null) { - archive.add(s); - } - } while (s != null); - - reader.close(); - - return archive; - } - - public static void createOthers(File file, String tagName, int lineBuffer) - throws IOException { - - List archive = new ArrayList(lineBuffer); - - BufferedReader reader = new BufferedReader(new FileReader(file)); - - String s; - - int count = 0; - int countFile = 1; - - String path = StringUtils.substringBefore(file.getAbsolutePath(), "\\" - + file.getName()) - + "\\"; - - do { - - s = reader.readLine(); - - if (s != null) { - archive.add(s + "\r\n"); - count++; - } - - if ((count % lineBuffer == 0) && count > 1) { // multiplos - - createFile(path + tagName + countFile + ".txt", archive); - archive = new ArrayList(lineBuffer); - countFile++; - } - - } while (s != null); - - if (!archive.isEmpty()) { - createFile(path + tagName + countFile + ".txt", archive); - } - - reader.close(); - } - - - - /** - *

- * Método responsável pela marcação de qualqer arquivo. - *

- * - * @param pathName - * @param tag - * @return sucess - * - * @since - */ - - public static boolean mark(String pathName, String tag) { - - if (pathName != null & tag != null) { - - File arch = new File(pathName); - File newArch = new File(pathName + tag); - - arch.renameTo(newArch); - - return true; - } - return false; - } - - - - /** - *

- * Método responsável pela renomeação de qualqer arquivo - *

- * - * @param pathDir - * @param name - * @param wishName - * @return sucess - * - * @since - */ - - public static boolean renameAs(String pathDir, String name, - String wishName) { - - if (pathDir != null & name != null & wishName != null) { - - File arch = new File(pathDir + "/" + name); - File newArch = new File(pathDir + "/" + wishName); - - arch.renameTo(newArch); - - return true; - } - - return false; - } - - - - /** - *

- * Cria um arquivo a partir de uma única string com o layout da mesma. Ou - * seja, se a string tem quebra de linha o arquivo também terá. - *

- * - * @param path - * @param content - * @return sucess - * - * @since - */ - - public static boolean createFile(String path, String content) { - - try { - - File arch = null; - - arch = new File(path); - - BufferedWriter wtr = new BufferedWriter(new FileWriter(arch)); - wtr.write(content); - wtr.flush(); - wtr.close(); - - arch.setWritable(true); - arch.setReadable(true); - arch.setExecutable(true); - - return true; - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - return false; - - } - - - /** - *

- * Cria um arquivo com várias linhas a partir de uma lista de strings. Para - * cada item da lista uma linha será criada no arquivo. - *

- * - * @param path - * @param content - * - * @since - */ - - public static void createFile(String path, List content) { - - File arq = null; - - arq = new File(path); - - write(arq, content); - - } - - - - /** - *

- * Cria um arquivo com vária linhas a partir de uma lista de strings. Para - * cada item da lista uma linha será criada no arquivo. - *

- * - * @param file - * @param content - * - * @since - */ - - public static void write(File file, List content) { - - try { - - BufferedWriter wtr = new BufferedWriter(new FileWriter(file)); - for (String c : content) { - wtr.write(c); - } - - wtr.flush(); - wtr.close(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - *

- * Cria um arquivo a partir de uma única string. - *

- * - * @param file - * @param content - * - * @since - */ - - public static void write(File file, String content) { - - try { - - BufferedWriter wtr = new BufferedWriter(new FileWriter(file)); - - wtr.write(content); - - wtr.flush(); - wtr.close(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - -} From 44487972185ae80ebca53166de6b3467d742bcaa Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 03:59:34 +0000 Subject: [PATCH 14/87] =?UTF-8?q?'''REVIS=C3=83O:'''=20[jri:#78]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revisão do texto --- src/main/java/org/jrimum/texgit/type/component/Filler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java index 3f82e7e..b0d6f68 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -57,8 +57,8 @@ * *

* @author Gilmar P.S.L - * @author Misael Barreto - * @author Rômulo Augusto + * @author Misael Barreto + * @author Rômulo Augusto * @author Nordeste Fomento * Mercantil * From 02ef2638a22f7550eae37364359b6c459cf06626 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 05:10:21 +0000 Subject: [PATCH 15/87] =?UTF-8?q?Captura=20de=20erros=20com=20mais=20infor?= =?UTF-8?q?m=C3=A7=C3=B5es=20para=20os=20usu=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texgit/type/AbstractStringOfFields.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index ded7a92..d25d07f 100644 --- a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -1,5 +1,7 @@ package org.jrimum.texgit.type; +import static java.lang.String.format; + import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -7,6 +9,7 @@ import java.util.ListIterator; import org.apache.commons.lang.StringUtils; +import org.jrimum.utilix.Collections; import org.jrimum.utilix.Objects; import org.jrimum.utilix.text.TextStream; @@ -82,10 +85,23 @@ public String write() { StringBuilder lineOfFields = new StringBuilder(StringUtils.EMPTY); - Objects.checkNotNull(fields, "fields"); + Objects.checkNotNull(fields, "Fields == null"); + Collections.checkNotEmpty(fields, "Coleção de fields vazia!"); for (G field : fields) { - lineOfFields.append(field.write()); + + try { + + lineOfFields.append(field.write()); + + } catch (Exception e) { + + throw new IllegalStateException( + format( + "Erro ao tentar escrever o campo \"%s\" com valor [%s] na posição [%s].", + field.getName(), field.getValue(), fields + .indexOf(field)),e); + } } return lineOfFields.toString(); From ec4d7acabb02fbfbaf8bc43a004e2eddd863a84b Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 05:10:35 +0000 Subject: [PATCH 16/87] =?UTF-8?q?Captura=20de=20erros=20com=20mais=20infor?= =?UTF-8?q?m=C3=A7=C3=B5es=20para=20os=20usu=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texgit/type/component/BlockOfFields.java | 24 +++- .../texgit/type/component/FlatFile.java | 107 +++++++++++------ .../jrimum/texgit/type/component/Record.java | 109 ++++++++++++------ 3 files changed, 159 insertions(+), 81 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index 46cb27a..89cebe5 100644 --- a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -1,10 +1,12 @@ package org.jrimum.texgit.type.component; +import static java.lang.String.format; import static org.jrimum.utilix.Objects.isNotNull; import org.jrimum.texgit.type.AbstractStringOfFields; import org.jrimum.texgit.type.FixedLength; import org.jrimum.texgit.type.FixedSize; +import org.jrimum.utilix.Collections; import org.jrimum.utilix.Objects; @SuppressWarnings("serial") @@ -63,9 +65,10 @@ public BlockOfFields clone() throws CloneNotSupportedException { @Override public void read(String lineOfFields) { - Objects.checkNotNull(lineOfFields, "lineOfFields"); + Objects.checkNotNull(lineOfFields, "String de leitura nula!"); - Objects.checkNotNull(getFields(), "fields"); + Objects.checkNotNull(getFields(), "Fields == null"); + Collections.checkNotEmpty(getFields(), "Coleção de fields vazia!"); if (isSizeAsDefinaed() && isLengthWithDefinaed(lineOfFields.length())) { @@ -73,8 +76,18 @@ public void read(String lineOfFields) { for (FixedField field : getFields()) { - field.read(builder.substring(0, field.getFixedLength())); - builder.delete(0, field.getFixedLength()); + try { + + field.read(builder.substring(0, field.getFixedLength())); + builder.delete(0, field.getFixedLength()); + + } catch (Exception e) { + + throw new IllegalStateException( + format( + "Erro ao tentar ler o campo \"%s\" na posição [%s].", + field.getName(), getFields().indexOf(field)),e); + } } builder = null; @@ -84,7 +97,8 @@ public void read(String lineOfFields) { @Override public String write() { - Objects.checkNotNull(getFields(), "fields"); + Objects.checkNotNull(getFields(), "Fields == null"); + Collections.checkNotEmpty(getFields(), "Coleção de fields vazia!"); String str = null; diff --git a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java index 05220f3..d272070 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java @@ -1,5 +1,7 @@ package org.jrimum.texgit.type.component; +import static java.lang.String.format; +import static org.apache.commons.lang.StringUtils.EMPTY; import static org.apache.commons.lang.StringUtils.isNotBlank; import static org.jrimum.utilix.Objects.isNotNull; import static org.jrimum.utilix.Objects.isNull; @@ -92,51 +94,59 @@ public void read(List str) { record = recordFactory.create(id); - if(isRepitable(id)){ + try{ - while(read){ + if(isRepitable(id)){ - if(isNull(record)) - record = recordFactory.create(id); - - if(lineIndex < str.size()) - line = str.get(lineIndex); - - typeRecord = record.readID(line); - - read = record.getIdType().getValue().equals(typeRecord.getValue()) && (lineIndex < str.size()); - - if(read){ + while(read){ + + if(isNull(record)) + record = recordFactory.create(id); - record.read(line); - lineIndex++; - addRecord(record); + if(lineIndex < str.size()) + line = str.get(lineIndex); - if(record.isHeadOfGroup()) - lineIndex = record.readInnerRecords(str,lineIndex,recordFactory); + typeRecord = record.readID(line); - record = null; + read = record.getIdType().getValue().equals(typeRecord.getValue()) && (lineIndex < str.size()); + + if(read){ + + record.read(line); + lineIndex++; + addRecord(record); + + if(record.isHeadOfGroup()) + lineIndex = record.readInnerRecords(str,lineIndex,recordFactory); + + record = null; + } } - } - - }else{ - if((lineIndex < str.size())){ - - line = str.get(lineIndex); - typeRecord = record.readID(line); - if(record.getIdType().getValue().equals(typeRecord.getValue())){ + }else{ + if((lineIndex < str.size())){ - record.read(line); - lineIndex++; - addRecord(record); - - if(record.isHeadOfGroup()) - lineIndex = record.readInnerRecords(str,lineIndex,recordFactory); + line = str.get(lineIndex); + typeRecord = record.readID(line); - record = null; + if(record.getIdType().getValue().equals(typeRecord.getValue())){ + + record.read(line); + lineIndex++; + addRecord(record); + + if(record.isHeadOfGroup()) + lineIndex = record.readInnerRecords(str,lineIndex,recordFactory); + + record = null; + } } } + + } catch (Exception e) { + + throw new IllegalStateException(format( + "Erro ao tentar ler o registro \"%s\".", record.getName()), e); } } } @@ -144,6 +154,11 @@ record = null; } public List write() { + + return write(EMPTY); + } + + public List write(String lineEnding) { ArrayList out = new ArrayList(records.size()); @@ -157,20 +172,36 @@ public List write() { rec = Record.class.cast(record); - out.add(rec.write()+"\r\n"); + try{ + + out.add(rec.write()+lineEnding); + + } catch (Exception e) { + + throw new IllegalStateException(format( + "Erro ao tentar escrever o registro \"%s\".", rec.getName()), e); + } if(rec.isHeadOfGroup()) - out.addAll(rec.writeInnerRecords()); + out.addAll(rec.writeInnerRecords(lineEnding)); } }else{ Record rec = getRecord(id); - out.add(rec.write()+"\r\n"); + try{ + + out.add(rec.write()+lineEnding); + + } catch (Exception e) { + + throw new IllegalStateException(format( + "Erro ao tentar escrever o registro \"%s\".", rec.getName()), e); + } if(rec.isHeadOfGroup()) - out.addAll(rec.writeInnerRecords()); + out.addAll(rec.writeInnerRecords(lineEnding)); } } diff --git a/src/main/java/org/jrimum/texgit/type/component/Record.java b/src/main/java/org/jrimum/texgit/type/component/Record.java index 6f527a7..a5c5940 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Record.java +++ b/src/main/java/org/jrimum/texgit/type/component/Record.java @@ -1,5 +1,7 @@ package org.jrimum.texgit.type.component; +import static java.lang.String.format; +import static org.apache.commons.lang.StringUtils.EMPTY; import static org.apache.commons.lang.StringUtils.isNotBlank; import static org.jrimum.utilix.Objects.isNotNull; import static org.jrimum.utilix.Objects.isNull; @@ -116,6 +118,7 @@ public int readInnerRecords(List lines, int lineIndex, RecordFactory lines, int lineIndex, RecordFactory iFactory) { if(isNotNull(record)){ + if(isNotNull(record.getDeclaredInnerRecords()) && !record.getDeclaredInnerRecords().isEmpty()){ boolean read = true; @@ -128,51 +131,60 @@ private int readInnerRecords(Record record, List lines, int lineIndex, R innerRec = iFactory.create(id); - if(isRepitable(id)){ + try{ - while(read){ - - if(isNull(innerRec)) - innerRec = iFactory.create(id); - - if(lineIndex < lines.size()) - line = lines.get(lineIndex); + if(isRepitable(id)){ - typeRecord = innerRec.readID(line); - - read = innerRec.getIdType().getValue().equals(typeRecord.getValue()) && (lineIndex < lines.size()); - - if(read){ + while(read){ + + if(isNull(innerRec)) + innerRec = iFactory.create(id); - innerRec.read(line); - lineIndex++; - record.addInnerRecord(innerRec); + if(lineIndex < lines.size()) + line = lines.get(lineIndex); - if(innerRec.isHeadOfGroup()) - innerRec.readInnerRecords(lines,lineIndex,iFactory); + typeRecord = innerRec.readID(line); - innerRec = null; + read = innerRec.getIdType().getValue().equals(typeRecord.getValue()) && (lineIndex < lines.size()); + + if(read){ + + innerRec.read(line); + lineIndex++; + record.addInnerRecord(innerRec); + + if(innerRec.isHeadOfGroup()) + innerRec.readInnerRecords(lines,lineIndex,iFactory); + + innerRec = null; + } } - } - - }else{ - if((lineIndex < lines.size())){ - - line = lines.get(lineIndex); - typeRecord = innerRec.readID(line); - if(innerRec.getIdType().getValue().equals(typeRecord.getValue())){ + }else{ + if((lineIndex < lines.size())){ - innerRec.read(line); - lineIndex++; - record.addInnerRecord(innerRec); - - if(innerRec.isHeadOfGroup()) - innerRec.readInnerRecords(lines,lineIndex,iFactory); + line = lines.get(lineIndex); + typeRecord = innerRec.readID(line); - innerRec = null; + if(innerRec.getIdType().getValue().equals(typeRecord.getValue())){ + + innerRec.read(line); + lineIndex++; + record.addInnerRecord(innerRec); + + if(innerRec.isHeadOfGroup()) + innerRec.readInnerRecords(lines,lineIndex,iFactory); + + innerRec = null; + } } } + + } catch (Exception e) { + + throw new IllegalStateException(format( + "Erro ao tentar ler o registro \"%s\".", + innerRec.getName()), e); } } } @@ -183,10 +195,15 @@ private int readInnerRecords(Record record, List lines, int lineIndex, R public List writeInnerRecords(){ - return writeInnerRecords(this); + return writeInnerRecords(this,EMPTY); + } + + public List writeInnerRecords(String lineEnding){ + + return writeInnerRecords(this,lineEnding); } - private List writeInnerRecords(Record record){ + private List writeInnerRecords(Record record, String lineEnding){ ArrayList out = new ArrayList(record.getInnerRecords().size()); @@ -196,7 +213,15 @@ private List writeInnerRecords(Record record){ for(Record rec : getRecords(id)){ - out.add(rec.write()+"\r\n"); + try{ + + out.add(rec.write()+lineEnding); + + } catch (Exception e) { + + throw new IllegalStateException(format( + "Erro ao tentar escrever o registro \"%s\".", rec.getName()), e); + } if(rec.isHeadOfGroup()) out.addAll(rec.writeInnerRecords()); @@ -206,7 +231,15 @@ private List writeInnerRecords(Record record){ Record rec = getRecord(id); - out.add(rec.write()+"\r\n"); + try{ + + out.add(rec.write()+lineEnding); + + } catch (Exception e) { + + throw new IllegalStateException(format( + "Erro ao tentar escrever o registro \"%s\".", rec.getName()), e); + } if(rec.isHeadOfGroup()) out.addAll(rec.writeInnerRecords()); From 06226e5077802e41aad866f15b8a76129efd2874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B4mulo=20Augusto?= Date: Fri, 19 Nov 2010 15:14:24 +0000 Subject: [PATCH 17/87] =?UTF-8?q?Cofigura=C3=A7=C3=A3o=20de=20gera=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20JAR=20com=20depend=C3=AAncias=20do=20projeto.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 157 ++++++++++++++---- .../assembly/texgit-dependencias-jrimum.xml | 25 +++ 2 files changed, 151 insertions(+), 31 deletions(-) create mode 100644 src/main/assembly/texgit-dependencias-jrimum.xml diff --git a/pom.xml b/pom.xml index 5015481..420d3dc 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,6 @@ - + 4.0.0 jrimum.org texgit @@ -8,57 +8,152 @@ 0.2.0-SNAPSHOT Projeto open source de componentes de software para o domínio de negócios do Brasil. http://www.jrimum.org/texgit - - + + The Apache Software License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0.txt repo - + + + Grupo JRimum + http://www.jrimum.org/ + + + + TRAC + http://www.jrimum.org/texgit + + hudson http://localhost:8080 + scm:svn:http://www.jrimum.org/svn/texgit scm:svn:http://www.jrimum.org/svn/texgit HEAD http://www.jrimum.org/svn/texgit - + + + + Gilmar P. S. L. + gilmatryx@gmail.com + + + Misael Barreto + misaelbarreto@gmail.com + + + Rômulo Augusto + romulomail@gmail.com + + + + + UTF-8 + UTF-8 + + - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.0.2 - - 1.6 - 1.6 - UTF-8 - - - - org.apache.maven.plugins - maven-surefire-plugin - - true - - - - + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.1 + + 1.5 + 1.5 + + + + + maven-assembly-plugin + 2.2 + + + src/main/assembly/texgit-dependencias-jrimum.xml + + + + + make-assembly + package + + single + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.5 + + true + + org/jrimum/texgit/**/* + + + org/jrimum/texgit/**/*$* + + + + + + org.apache.maven.plugins + maven-source-plugin + 2.1.2 + + + attach-sources + verify + + jar + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.7 + + + attach-javadoc + verify + + jar + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.7 + + + + org.jrimum utilix 0.2.3-SNAPSHOT - + sun-jaxb jaxb-api @@ -69,7 +164,7 @@ jaxb-impl 2.2 - + junit junit @@ -77,12 +172,12 @@ test - + JBoss Repository - http://repository.jboss.org/maven2/ + http://repository.jboss.org/nexus/content/groups/public-jboss/ - + \ No newline at end of file diff --git a/src/main/assembly/texgit-dependencias-jrimum.xml b/src/main/assembly/texgit-dependencias-jrimum.xml new file mode 100644 index 0000000..af8f797 --- /dev/null +++ b/src/main/assembly/texgit-dependencias-jrimum.xml @@ -0,0 +1,25 @@ + + + texgit-dependencias-jrimum + + jar + + false + + + / + true + true + runtime + + commons-lang:commons-lang + log4j:log4j + sun-jaxb:jaxb-api + sun-jaxb:jaxb-impl + + + + \ No newline at end of file From d351ec79020476072f057edcb6ae7d7f0649b112 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 16:16:21 +0000 Subject: [PATCH 18/87] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20de=20m=C3=A9tod?= =?UTF-8?q?o=20''toString''=20para=20principais=20informa=C3=A7=C3=B5es=20?= =?UTF-8?q?do=20objeto.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jrimum/texgit/type/component/Field.java | 11 +++++++++++ .../org/jrimum/texgit/type/component/Filler.java | 11 +++++++++++ .../jrimum/texgit/type/component/FixedField.java | 14 ++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index 6793273..09985cb 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -1,5 +1,7 @@ package org.jrimum.texgit.type.component; +import static java.lang.String.format; +import static org.apache.commons.lang.StringUtils.EMPTY; import static org.apache.commons.lang.StringUtils.isBlank; import static org.apache.commons.lang.StringUtils.isNumeric; import static org.jrimum.utilix.Objects.isNotNull; @@ -332,4 +334,13 @@ public void setFormatter(Format formatter) { else throw new IllegalArgumentException("Formato inválido [ " + formatter + " ]!"); } + + @Override + public String toString() { + + return format("Field: {name[%s], value[%s], formatter[%s]}" + , Objects.whenNull(this.name, EMPTY) + , Objects.whenNull(this.value, EMPTY) + , Objects.whenNull(this.formatter, EMPTY)); + } } diff --git a/src/main/java/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java index b0d6f68..ef0d50e 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -30,11 +30,14 @@ package org.jrimum.texgit.type.component; +import static java.lang.String.format; +import static org.apache.commons.lang.StringUtils.EMPTY; import static org.jrimum.utilix.Objects.isNotNull; import java.io.Serializable; import org.apache.commons.lang.StringUtils; +import org.jrimum.utilix.Objects; import org.jrimum.utilix.text.TextStream; /** @@ -379,4 +382,12 @@ private String fillLeft(String toFill, int length) { return StringUtils.leftPad(toFill, length, padding.toString()); } + @Override + public String toString() { + + return format( + "Filler: {padding[%s], sideToFill[%s]}" + , Objects.whenNull(this.padding, EMPTY) + , Objects.whenNull(this.sideToFill, EMPTY)); + } } diff --git a/src/main/java/org/jrimum/texgit/type/component/FixedField.java b/src/main/java/org/jrimum/texgit/type/component/FixedField.java index 0a56244..f94533b 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/component/FixedField.java @@ -1,5 +1,7 @@ package org.jrimum.texgit.type.component; +import static java.lang.String.format; +import static org.apache.commons.lang.StringUtils.EMPTY; import static org.jrimum.utilix.Objects.isNotNull; import java.text.Format; @@ -154,4 +156,16 @@ public void setFiller(Filler filler) { else throw new IllegalArgumentException("Preenchedor inválido [ " + filler + " ]!"); } + + @Override + public String toString() { + + return format( + "%s FixedField: {length[%s], instantLength[%s], filler[%s]}", + super.toString() + , Objects.whenNull(this.length, EMPTY) + , Objects.whenNull(this.instantLength, EMPTY) + , Objects.whenNull(this.filler, EMPTY)); + } + } From 231f2fce23971bb9d62c7bbbe841c08dbe750851 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 18:54:19 +0000 Subject: [PATCH 19/87] =?UTF-8?q?Captura=20de=20erros=20com=20mais=20infor?= =?UTF-8?q?m=C3=A7=C3=B5es=20para=20os=20usu=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jrimum/texgit/type/component/Field.java | 106 +++++++++--------- .../texgit/type/component/FixedField.java | 6 +- .../jrimum/texgit/type/component/Record.java | 5 +- 3 files changed, 62 insertions(+), 55 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index 09985cb..b552108 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -7,7 +7,6 @@ import static org.jrimum.utilix.Objects.isNotNull; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.Format; @@ -109,28 +108,35 @@ public Field clone() throws CloneNotSupportedException { public void read(String str) { - Objects.checkNotNull(str, "String Inválida"); - - if (this.value instanceof TextStream) { + Objects.checkNotNull(str, "String inválida [null]!"); + + try{ + + if (this.value instanceof TextStream) { - TextStream reader = (TextStream) this.value; - reader.read(str); + TextStream reader = (TextStream) this.value; + reader.read(str); - } else if (this.value instanceof BigDecimal) { + } else if (this.value instanceof BigDecimal) { - readDecimalField(str); + readDecimalField(str); - } else if (this.value instanceof Date) { + } else if (this.value instanceof Date) { - readDateField(str); + readDateField(str); - } else if (this.value instanceof Character) { + } else if (this.value instanceof Character) { - readCharacter(str); + readCharacter(str); - } else { + } else { - readStringOrNumericField(str); + readStringOrNumericField(str); + } + + }catch (Exception e) { + + throw new IllegalStateException("FALHA NA LEITURA DO CAMPO! "+toString(),e); } } @@ -165,7 +171,7 @@ private void readDecimalField(String str) { } catch (ParseException e) { - errorG(e, str); + throwReadError(e, str); } } @@ -179,14 +185,14 @@ private void readDateField(String str) { if(isBlankAccepted()) value = (G) Dates.invalidDate(); else - new IllegalArgumentException("Campo data vazio não permitido: ["+str+"]"); + new IllegalArgumentException("Campo data vazio não permitido: ["+str+"]!"); } value = (G) formatter.parseObject(str); } catch (ParseException e) { - errorG(e, str); + throwReadError(e, str); } } @@ -205,14 +211,9 @@ private void readStringOrNumericField(String str) { value = (G) cons.newInstance(str); - } catch (IllegalArgumentException e) { - errorG(e, str).printStackTrace(); - } catch (InstantiationException e) { - errorG(e, str).printStackTrace(); - } catch (IllegalAccessException e) { - errorG(e, str).printStackTrace(); - } catch (InvocationTargetException e) { - errorG(e, str).printStackTrace(); + } catch (Exception e) { + + throwReadError(e, str); } } } @@ -221,26 +222,33 @@ private void readStringOrNumericField(String str) { public String write() { - String str = null; - - if (value instanceof TextStream) { + try{ - TextStream its = (TextStream) value; - - str = its.write(); - - } else if (value instanceof Date) { - - str = writeDateField(); + String str = null; + + if (value instanceof TextStream) { + + TextStream its = (TextStream) value; + + str = its.write(); + + } else if (value instanceof Date) { + + str = writeDateField(); + } + + else if (value instanceof BigDecimal) + str = writeDecimalField(); + + else + str = value.toString(); + + return str; + + }catch (Exception e) { + + throw new IllegalStateException("FALHA NA ESCRITA DO CAMPO ESCRITA! "+toString(),e); } - - else if (value instanceof BigDecimal) - str = writeDecimalField(); - - else - str = value.toString(); - - return str; } private String writeDecimalField(){ @@ -266,13 +274,9 @@ private String writeDateField(){ return str; } - protected static Exception errorG(Exception e, String value){ - - StackTraceElement[] stackTrace = e.getStackTrace(); - e = new RuntimeException("Problems entre a instância e o valor: [ " + value + " ]!\nCausado por: "+e.getCause()); - e.setStackTrace(stackTrace); + private void throwReadError(Exception e, String value){ - return e; + throw new IllegalArgumentException("Falha na leitura da string: [ " + value + " ] ! "+toString(), e); } private String parseNumber(String str){ @@ -282,10 +286,10 @@ private String parseNumber(String str){ if(isBlankAccepted()) str = "0"; else - new IllegalArgumentException("Campo numérico vazio não permitido: ["+str+"]"); + new IllegalArgumentException("Campo numérico vazio não permitido: ["+str+"]!"); }else if(!isNumeric(str)) - new IllegalArgumentException("O campo deve ser numérico e não: ["+str+"]"); + new IllegalArgumentException("O campo deve ser numérico e não: ["+str+"]!"); return str; } diff --git a/src/main/java/org/jrimum/texgit/type/component/FixedField.java b/src/main/java/org/jrimum/texgit/type/component/FixedField.java index f94533b..eaa1660 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/component/FixedField.java @@ -89,14 +89,14 @@ public FixedField clone() throws CloneNotSupportedException { @Override public void read(String str) { - Objects.checkNotNull(str, "String Inválida"); + Objects.checkNotNull(str, "String inválida [null]!"); if (str.length() == getFixedLength()) { super.read(str); } else throw new IllegalArgumentException("Tamanho da string [ " + str.length() + " ] diferente do especificado [ " - + getFixedLength() + " ]!"); + + getFixedLength() + " ]! "+toString()); } /** @@ -128,7 +128,7 @@ public boolean isFixedAsDefined() throws IllegalStateException { return true; else throw new IllegalStateException("Tamanho da string [ " + instantLength - + " ] diferente do especificado [" + getFixedLength() + "]!"); + + " ] diferente do especificado [" + getFixedLength() + "]! "+toString()); } public Integer getFixedLength() { diff --git a/src/main/java/org/jrimum/texgit/type/component/Record.java b/src/main/java/org/jrimum/texgit/type/component/Record.java index a5c5940..0c9b03d 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Record.java +++ b/src/main/java/org/jrimum/texgit/type/component/Record.java @@ -11,6 +11,7 @@ import java.util.Set; import org.jrimum.texgit.type.Field; +import org.jrimum.utilix.Objects; @@ -51,6 +52,7 @@ public Record clone() throws CloneNotSupportedException { return (Record) super.clone(); } + @SuppressWarnings("null") public FixedField readID(String lineRecord) { FixedField ffID = null; @@ -61,7 +63,8 @@ public FixedField readID(String lineRecord) { ffID.setName(""); } catch (CloneNotSupportedException e) { - e.printStackTrace(); + + throw new UnsupportedOperationException(format("Quebra de contrato [%s] não suporta clonagem!",Objects.whenNull(ffID, "FixedField", ffID.getClass())), e); } getIdType().read(lineRecord.substring(getIdPosition(), getIdPosition() + getIdType().getFixedLength())); From 9d64487fb5e41008ef981c8eb9d4bf15c924c1db Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 19:23:24 +0000 Subject: [PATCH 20/87] Invalid constant name: "_Texgit_QNAME" starts with an underscore --- src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java index 36b6681..cd305ef 100644 --- a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java @@ -25,6 +25,8 @@ class FixedFieldBuilder { + private final static String BASE_DECIMAL_FORMAT = "0."; + static FixedField build(MetaField metaField) { FixedField fixedField = null; @@ -199,8 +201,6 @@ private static Format buildFormat(String strFormat, EnumFormatsTypes type) { private static String buildFormat(EnumFormats format, EnumFormatsTypes type) { - final String BASE_DECIMAL_FORMAT = "0."; - String strFormat = EMPTY; /* * DATE_DDMMYY, DATE_DDMMYYYY, DATE_YYMMDD, DATE_YYYYMMDD, From 92dadae73f691ffa4586b1a57492768a02c2b855 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 19:28:46 +0000 Subject: [PATCH 21/87] Local variable names should conform to the defined standard. ''Aproveitando e mudando para static field'' --- src/main/java/org/jrimum/texgit/language/ObjectFactory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/language/ObjectFactory.java b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java index 0bb33f5..1408426 100644 --- a/src/main/java/org/jrimum/texgit/language/ObjectFactory.java +++ b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java @@ -26,7 +26,7 @@ @XmlRegistry public class ObjectFactory { - private final static QName _Texgit_QNAME = new QName( + private final static QName _TEXGIT_QNAME = new QName( "http://gilmatryx.googlepages.com/Texgit", "Texgit"); /** @@ -123,7 +123,7 @@ public MetaFiller createMetaFiller() { */ @XmlElementDecl(namespace = "http://gilmatryx.googlepages.com/Texgit", name = "Texgit") public JAXBElement createTexgit(MetaTexgit value) { - return new JAXBElement(_Texgit_QNAME, MetaTexgit.class, + return new JAXBElement(_TEXGIT_QNAME, MetaTexgit.class, null, value); } From 7004ecdf3695ac1d15138cfe52f7e10cd54860ce Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 19:36:47 +0000 Subject: [PATCH 22/87] Invalid constant name: "_TEXGIT_QNAME" starts with an underscore --- src/main/java/org/jrimum/texgit/language/ObjectFactory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/language/ObjectFactory.java b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java index 1408426..ee67278 100644 --- a/src/main/java/org/jrimum/texgit/language/ObjectFactory.java +++ b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java @@ -26,7 +26,7 @@ @XmlRegistry public class ObjectFactory { - private final static QName _TEXGIT_QNAME = new QName( + private final static QName TEXGIT_QNAME = new QName( "http://gilmatryx.googlepages.com/Texgit", "Texgit"); /** @@ -123,7 +123,7 @@ public MetaFiller createMetaFiller() { */ @XmlElementDecl(namespace = "http://gilmatryx.googlepages.com/Texgit", name = "Texgit") public JAXBElement createTexgit(MetaTexgit value) { - return new JAXBElement(_TEXGIT_QNAME, MetaTexgit.class, + return new JAXBElement(TEXGIT_QNAME, MetaTexgit.class, null, value); } From 918cc54bdb02d231c79e791795e275519cd47929 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 19:39:45 +0000 Subject: [PATCH 23/87] Objects that cannot be modified at run-time should be created as static constants. --- .../org/jrimum/texgit/engine/FixedFieldBuilder.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java index cd305ef..fec6a78 100644 --- a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java @@ -75,7 +75,7 @@ private static FixedField getInstance(MetaField metaField) if (isNotBlank(metaField.getValue())) fINT.setValue(Integer.parseInt(metaField.getValue())); else - fINT.setValue(new Integer(0)); + fINT.setValue(Integer.valueOf(0)); fField = fINT; break; case LONG: @@ -83,7 +83,7 @@ private static FixedField getInstance(MetaField metaField) if (isNotBlank(metaField.getValue())) fLNG.setValue(Long.parseLong(metaField.getValue())); else - fLNG.setValue(new Long(0)); + fLNG.setValue(Long.valueOf(0)); fField = fLNG; break; case FLOAT: @@ -91,7 +91,7 @@ private static FixedField getInstance(MetaField metaField) if (isNotBlank(metaField.getValue())) fFLT.setValue(Float.parseFloat(metaField.getValue())); else - fFLT.setValue(new Float(0)); + fFLT.setValue(Float.valueOf(0)); fField = fFLT; break; case DOUBLE: @@ -99,7 +99,7 @@ private static FixedField getInstance(MetaField metaField) if (isNotBlank(metaField.getValue())) fDBE.setValue(Double.parseDouble(metaField.getValue())); else - fDBE.setValue(new Double(0)); + fDBE.setValue(Double.valueOf(0)); fField = fDBE; break; case BIGDECIMAL: @@ -109,7 +109,7 @@ private static FixedField getInstance(MetaField metaField) .cast(formatter).parse(metaField.getValue()) .doubleValue())); else - fBDL.setValue(new BigDecimal(0)); + fBDL.setValue(BigDecimal.ZERO); fField = fBDL; break; case DATE: From e5db327b9c6eef7f22296d53be037e2240c3486a Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Nov 2010 20:13:09 +0000 Subject: [PATCH 24/87] =?UTF-8?q?Corre=C3=A7=C3=A3o=20do=20group=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 420d3dc..3d89f08 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - jrimum.org + org.jrimum texgit Projeto Texgit 0.2.0-SNAPSHOT From 1fe0c31304683e4efd50d9efbd01d190bc9f15f8 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 22 Nov 2010 16:57:53 +0000 Subject: [PATCH 25/87] =?UTF-8?q?Revis=C3=A3o=20do=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/Texgit.java | 41 ++++++++++----------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/Texgit.java b/src/main/java/org/jrimum/texgit/Texgit.java index b9e682e..cbe166b 100644 --- a/src/main/java/org/jrimum/texgit/Texgit.java +++ b/src/main/java/org/jrimum/texgit/Texgit.java @@ -7,34 +7,31 @@ import org.jrimum.texgit.engine.TexgitManager; +public final class Texgit { + public static final FlatFile createFlatFile(File xmlDef) + throws TexgitException { + if (isNotNull(xmlDef)){ + + return TexgitManager.buildFlatFile(xmlDef); + } -public final class Texgit { - - public static final FlatFile createFlatFile(File xmlDef)throws TexgitException{ - - FlatFile iFlatFile = null; - - if (isNotNull(xmlDef)) - iFlatFile = TexgitManager.buildFlatFile(xmlDef); - - return iFlatFile; + return null; } - - public static final FlatFile createFlatFile(String xmlDef)throws TexgitException{ - - FlatFile iFlatFile = null; - - try{ - - if(isNotBlank(xmlDef)) - iFlatFile = createFlatFile(new File(xmlDef)); - - }catch (Exception e) { + + public static final FlatFile createFlatFile(String xmlDef) + throws TexgitException { + + try { + + if (isNotBlank(xmlDef)) + return createFlatFile(new File(xmlDef)); + + } catch (Exception e) { throw new TexgitException(e); } - return iFlatFile; + return null; } } From 49a635e2e98ac7f70a153ed57ae344b6e7e53dfb Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 22 Nov 2010 16:59:14 +0000 Subject: [PATCH 26/87] =?UTF-8?q?Revis=C3=A3o=20do=20c=C3=B3digo:=20=20*?= =?UTF-8?q?=20Implement=C3=A7=C3=A3o=20de=20interface=20{{{TextStream}}}?= =?UTF-8?q?=20para=20prover=20m=C3=A9todos=20read=20and=20write?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/Record.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jrimum/texgit/Record.java b/src/main/java/org/jrimum/texgit/Record.java index d420ed7..d884577 100644 --- a/src/main/java/org/jrimum/texgit/Record.java +++ b/src/main/java/org/jrimum/texgit/Record.java @@ -2,9 +2,11 @@ import java.util.List; +import org.jrimum.utilix.text.TextStream; -public interface Record{ + +public interface Record extends TextStream{ public void setValue(String fieldName, G value); From 03df7a70ca32caff300362176c872bdd9b7d8261 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 22 Nov 2010 17:01:45 +0000 Subject: [PATCH 27/87] =?UTF-8?q?Revis=C3=A3o=20do=20c=C3=B3digo:=20=20*?= =?UTF-8?q?=20Adi=C3=A7=C3=A3o=20de=20{{{ClassLoaders}}}=20para=20utiliza?= =?UTF-8?q?=C3=A7=C3=A3o=20to=20schema=20agora=20como=20resouce=20no=20pad?= =?UTF-8?q?r=C3=A3o=20maven?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java index a01d385..bc32aa7 100644 --- a/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java @@ -16,6 +16,7 @@ import org.jrimum.texgit.Texgit; import org.jrimum.texgit.TexgitException; import org.jrimum.texgit.language.MetaTexgit; +import org.jrimum.utilix.ClassLoaders; import org.xml.sax.SAXException; @@ -38,8 +39,7 @@ public static MetaTexgit parse(File xmlDef) throws TexgitException { SchemaFactory aSchemaFactory = SchemaFactory .newInstance(W3C_XML_SCHEMA_NS_URI); - Schema schema = aSchemaFactory.newSchema(Texgit.class - .getResource("/resource/TexgitSchema.xsd")); + Schema schema = aSchemaFactory.newSchema(ClassLoaders.getResource("TexgitSchema.xsd",Texgit.class)); aUnmarshaller.setSchema(schema); From f7d8847a599606c5a26dfc9179c01fc7d66d9225 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 22 Nov 2010 17:04:23 +0000 Subject: [PATCH 28/87] =?UTF-8?q?Revis=C3=A3o=20do=20c=C3=B3digo=20=20*=20?= =?UTF-8?q?Melhoria=20das=20mensagens=20de=20erros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texgit/type/AbstractStringOfFields.java | 7 ++--- .../texgit/type/component/BlockOfFields.java | 15 +++++----- .../jrimum/texgit/type/component/Field.java | 28 +++++++++---------- .../jrimum/texgit/type/component/Filler.java | 7 +++-- .../texgit/type/component/FixedField.java | 13 ++++----- 5 files changed, 33 insertions(+), 37 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index d25d07f..d99b7f8 100644 --- a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -42,8 +42,7 @@ public AbstractStringOfFields(Integer size) { fields.add(null); } } else { - throw new IllegalArgumentException("A quantidade de campos [ " - + size + " ] deve ser um número natural > 0!"); + throw new IllegalArgumentException(format("A quantidade de campos [%s] deve ser um número natural > 0!", size)); } } @@ -98,9 +97,9 @@ public String write() { throw new IllegalStateException( format( - "Erro ao tentar escrever o campo \"%s\" com valor [%s] na posição [%s].", + "Erro ao tentar escrever o campo \"%s\" com valor [%s] na posição [%s] no layout do registo.", field.getName(), field.getValue(), fields - .indexOf(field)),e); + .indexOf(field)+1),e); } } diff --git a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index 89cebe5..6ef2134 100644 --- a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -52,8 +52,7 @@ public BlockOfFields(Integer length, Integer size) { setSize(size); } else - throw new IllegalArgumentException("O comprimento do bloco [ " - + length + " ] deve ser um número natural > 0!"); + throw new IllegalArgumentException(format("O comprimento do bloco [%s] deve ser um número natural > 0!", length)); } @Override @@ -85,8 +84,8 @@ public void read(String lineOfFields) { throw new IllegalStateException( format( - "Erro ao tentar ler o campo \"%s\" na posição [%s].", - field.getName(), getFields().indexOf(field)),e); + "Erro ao tentar ler o campo \"%s\" na posição [%s] no layout do registo.", + field.getName(), getFields().indexOf(field)+1),e); } } @@ -128,7 +127,7 @@ private boolean isLengthWithDefinaed(int length){ if(length == getFixedLength()) return true; else - throw new IllegalStateException("O comprimento da string [ " + instantLength + " ] é incompátivel com o definido ["+getFixedLength()+"]!"); + throw new IllegalStateException(format("O comprimento da string [%s] é incompátivel com o definido [%s]!",instantLength,getFixedLength())); } private boolean isSizeAsDefinaed(){ @@ -136,7 +135,7 @@ private boolean isSizeAsDefinaed(){ if(size() == getFixedSize()) return true; else - throw new IllegalStateException("O número de fields [ " + size() + " ] é incompátivel com o definido ["+getFixedSize()+"]!"); + throw new IllegalStateException(format("O número de fields [%s] é incompátivel com o definido [%s]!", size(), getFixedSize())); } /** @@ -154,7 +153,7 @@ private void setLength(Integer length) { if (isNotNull(length)) this.length = length; else - throw new IllegalArgumentException("Comprimento inválido [" + length + "]!"); + throw new IllegalArgumentException(format("Comprimento inválido [%s]!", length)); } /** @@ -172,6 +171,6 @@ private void setSize(Integer size) { if (isNotNull(size)) this.size = size; else - throw new IllegalArgumentException("Tamanho inválido [" + size + "]!"); + throw new IllegalArgumentException(format("Tamanho inválido [%s]!", size)); } } diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index b552108..cc8e122 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -136,7 +136,7 @@ public void read(String str) { }catch (Exception e) { - throw new IllegalStateException("FALHA NA LEITURA DO CAMPO! "+toString(),e); + throw new IllegalStateException(format("Falha na leitura do campo! %s",toString()),e); } } @@ -185,7 +185,7 @@ private void readDateField(String str) { if(isBlankAccepted()) value = (G) Dates.invalidDate(); else - new IllegalArgumentException("Campo data vazio não permitido: ["+str+"]!"); + new IllegalArgumentException(format("Campo data vazio não permitido: [%s]!",str)); } value = (G) formatter.parseObject(str); @@ -247,7 +247,7 @@ else if (value instanceof BigDecimal) }catch (Exception e) { - throw new IllegalStateException("FALHA NA ESCRITA DO CAMPO ESCRITA! "+toString(),e); + throw new IllegalStateException(format("Falha na escrita do campo escrita! %s",toString()),e); } } @@ -274,11 +274,6 @@ private String writeDateField(){ return str; } - private void throwReadError(Exception e, String value){ - - throw new IllegalArgumentException("Falha na leitura da string: [ " + value + " ] ! "+toString(), e); - } - private String parseNumber(String str){ if(isBlank(str)){ @@ -286,10 +281,10 @@ private String parseNumber(String str){ if(isBlankAccepted()) str = "0"; else - new IllegalArgumentException("Campo numérico vazio não permitido: ["+str+"]!"); + new IllegalArgumentException(format("Campo numérico vazio não permitido: [%s]!",str)); }else if(!isNumeric(str)) - new IllegalArgumentException("O campo deve ser numérico e não: ["+str+"]!"); + new IllegalArgumentException(format("O campo deve ser numérico e não: [%s]!",str)); return str; } @@ -304,7 +299,7 @@ public void setName(String name) { if (isNotNull(name)) this.name = name; else - throw new IllegalArgumentException("Nome Inválido [" + name + "]!"); + throw new IllegalArgumentException(format("Nome Inválido: [%s]!",name)); } public boolean isBlankAccepted() { @@ -324,7 +319,7 @@ public void setValue(G value) { if (isNotNull(value)) this.value = value; else - throw new IllegalArgumentException("Valor Inválido [" + value + "]!"); + throw new IllegalArgumentException(format("Valor Inválido: [%s]!",value)); } public Format getFormatter() { @@ -336,13 +331,18 @@ public void setFormatter(Format formatter) { if (isNotNull(formatter)) this.formatter = formatter; else - throw new IllegalArgumentException("Formato inválido [ " + formatter + " ]!"); + throw new IllegalArgumentException(format("Formato inválido: [%s]!",formatter)); } + private void throwReadError(Exception e, String value){ + + throw new IllegalArgumentException(format("Falha na leitura da string: [\"%s\"]! %s",value,toString()), e); + } + @Override public String toString() { - return format("Field: {name[%s], value[%s], formatter[%s]}" + return format("Field [name=\"%s\", value=\"%s\", formatter=%s]" , Objects.whenNull(this.name, EMPTY) , Objects.whenNull(this.value, EMPTY) , Objects.whenNull(this.formatter, EMPTY)); diff --git a/src/main/java/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java index ef0d50e..cd6f046 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -114,7 +114,7 @@ public void setPadding(G fillWith) { this.padding = fillWith; else - throw new IllegalArgumentException("Preenchimento inválido [ " + fillWith + " ]!"); + throw new IllegalArgumentException(format("Preenchimento inválido [%s]!",fillWith)); } /** @@ -133,7 +133,7 @@ public void setSideToFill(Side sideToFill) { this.sideToFill = sideToFill; else - throw new IllegalArgumentException("Lado para preenchimento [ " + sideToFill + " ]!"); + throw new IllegalArgumentException(format("Lado para preenchimento [%s]!",sideToFill)); } /** @@ -386,8 +386,9 @@ private String fillLeft(String toFill, int length) { public String toString() { return format( - "Filler: {padding[%s], sideToFill[%s]}" + "Filler [padding=\"%s\", sideToFill=%s]" , Objects.whenNull(this.padding, EMPTY) , Objects.whenNull(this.sideToFill, EMPTY)); } + } diff --git a/src/main/java/org/jrimum/texgit/type/component/FixedField.java b/src/main/java/org/jrimum/texgit/type/component/FixedField.java index eaa1660..ffb723b 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/component/FixedField.java @@ -94,9 +94,7 @@ public void read(String str) { if (str.length() == getFixedLength()) { super.read(str); } else - throw new IllegalArgumentException("Tamanho da string [ " - + str.length() + " ] diferente do especificado [ " - + getFixedLength() + " ]! "+toString()); + throw new IllegalArgumentException(format("Tamanho da string [%s] diferente do especificado [%s]! %s",str.length(),getFixedLength(),toString())); } /** @@ -127,8 +125,7 @@ public boolean isFixedAsDefined() throws IllegalStateException { if(instantLength.equals(getFixedLength())) return true; else - throw new IllegalStateException("Tamanho da string [ " + instantLength - + " ] diferente do especificado [" + getFixedLength() + "]! "+toString()); + throw new IllegalStateException(format("Tamanho da string [%s] diferente do especificado [%s]! %s",instantLength,getFixedLength(),toString())); } public Integer getFixedLength() { @@ -141,7 +138,7 @@ public void setFixedLength(Integer length) { if (isNotNull(length)) this.length = length; else - throw new IllegalArgumentException("Comprimento inválido [" + length + "]!"); + throw new IllegalArgumentException(format("Comprimento inválido [%s]!",length)); } @@ -154,14 +151,14 @@ public void setFiller(Filler filler) { if(isNotNull(filler)) this.filler = filler; else - throw new IllegalArgumentException("Preenchedor inválido [ " + filler + " ]!"); + throw new IllegalArgumentException(format("Preenchedor inválido [%s]!",filler)); } @Override public String toString() { return format( - "%s FixedField: {length[%s], instantLength[%s], filler[%s]}", + "%s FixedField [length=%s, instantLength=%s, filler=%s]", super.toString() , Objects.whenNull(this.length, EMPTY) , Objects.whenNull(this.instantLength, EMPTY) From 22bfa24ce3e3f57b9b49c1345c6bacf3b6db1020 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 22 Nov 2010 17:09:44 +0000 Subject: [PATCH 29/87] =?UTF-8?q?Corre=C3=A7=C3=A3o=20de=20texto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jrimum/texgit/type/AbstractStringOfFields.java | 2 +- .../java/org/jrimum/texgit/type/component/BlockOfFields.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index d99b7f8..ba36818 100644 --- a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -97,7 +97,7 @@ public String write() { throw new IllegalStateException( format( - "Erro ao tentar escrever o campo \"%s\" com valor [%s] na posição [%s] no layout do registo.", + "Erro ao tentar escrever o campo \"%s\" com valor [%s] na posição [%s] no layout do registro.", field.getName(), field.getValue(), fields .indexOf(field)+1),e); } diff --git a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index 6ef2134..9503809 100644 --- a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -84,7 +84,7 @@ public void read(String lineOfFields) { throw new IllegalStateException( format( - "Erro ao tentar ler o campo \"%s\" na posição [%s] no layout do registo.", + "Erro ao tentar ler o campo \"%s\" na posição [%s] no layout do registro.", field.getName(), getFields().indexOf(field)+1),e); } } From 020cbbb924b044cfa91e7bd7337f8db8e98fee95 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 23 Nov 2010 15:57:31 +0000 Subject: [PATCH 30/87] =?UTF-8?q?Corre=C3=A7=C3=A3o=20de=20texto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jrimum/texgit/type/component/BlockOfFields.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index 9503809..e3ce21e 100644 --- a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -127,7 +127,7 @@ private boolean isLengthWithDefinaed(int length){ if(length == getFixedLength()) return true; else - throw new IllegalStateException(format("O comprimento da string [%s] é incompátivel com o definido [%s]!",instantLength,getFixedLength())); + throw new IllegalStateException(format("O comprimento da string [%s] é incompátivel com o definido [%s] no layout do registro!",length,getFixedLength())); } private boolean isSizeAsDefinaed(){ From 1733eb761cf96a1a8eea47a76ed8379cf6ac938f Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 6 Dec 2010 18:12:20 +0000 Subject: [PATCH 31/87] =?UTF-8?q?'''Corre=C3=A7=C3=A3o'''=20=20*=20Leitrua?= =?UTF-8?q?=20de=20campos=20data=20quando=20o=20campo=20=C3=A9=20blank=20'?= =?UTF-8?q?''Melhoria'''=20=20*=20Informa=C3=A7=C3=A3o=20do=20campo=20isBl?= =?UTF-8?q?ankAccepted=20no=20toString?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jrimum/texgit/type/component/Field.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index cc8e122..3c42698 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -182,14 +182,20 @@ private void readDateField(String str) { if(isBlank(str)){ - if(isBlankAccepted()) + if(isBlankAccepted()){ + value = (G) Dates.invalidDate(); - else + + }else{ + new IllegalArgumentException(format("Campo data vazio não permitido: [%s]!",str)); - } + } + + }else{ + + value = (G) formatter.parseObject(str); + } - value = (G) formatter.parseObject(str); - } catch (ParseException e) { throwReadError(e, str); @@ -342,9 +348,11 @@ private void throwReadError(Exception e, String value){ @Override public String toString() { - return format("Field [name=\"%s\", value=\"%s\", formatter=%s]" + return format("Field [name=\"%s\", value=\"%s\", isBlankAccepted=%s, formatter=%s]" , Objects.whenNull(this.name, EMPTY) , Objects.whenNull(this.value, EMPTY) + , Objects.whenNull(this.isBlankAccepted(), EMPTY) , Objects.whenNull(this.formatter, EMPTY)); + } } From aeb0244a51e5af566de91b2e933a1d65acce98e9 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 7 Dec 2010 16:29:36 +0000 Subject: [PATCH 32/87] =?UTF-8?q?'''Corre=C3=A7=C3=A3o'''=20=20*Escrita=20?= =?UTF-8?q?de=20datas=20deve=20usar=20o=20formatador=20quando=20n=C3=A3o?= =?UTF-8?q?=20for=20igual=20a=20data=20inv=C3=A1lida,=20e=20n=C3=A3o=20o?= =?UTF-8?q?=20contr=C3=A1rio.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jrimum/texgit/type/component/Field.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index 3c42698..f0ee2b0 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -13,7 +13,6 @@ import java.text.ParseException; import java.util.Date; -import org.apache.commons.lang.StringUtils; import org.jrimum.utilix.Dates; import org.jrimum.utilix.Objects; import org.jrimum.utilix.text.TextStream; @@ -268,16 +267,12 @@ private String writeDecimalField(){ private String writeDateField(){ - String str = StringUtils.EMPTY; + if (!Dates.equalsInvalidDate((Date) value)){ - Date dateValue = (Date) value; - - if (Dates.equalsInvalidDate(dateValue)){ - - str = formatter.format(dateValue); + return formatter.format(value); } - return str; + return EMPTY; } private String parseNumber(String str){ From 2924a99120d98d8f7da2711b8cbd7f95e0ea79d4 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 4 Jan 2011 20:35:45 +0000 Subject: [PATCH 33/87] =?UTF-8?q?Mudan=C3=A7a=20de=20alguns=20m=C3=A9todos?= =?UTF-8?q?=20da=20interface=20para=20seguir=20estilo=20fluente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/FlatFile.java | 10 +++++----- src/main/java/org/jrimum/texgit/Record.java | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/FlatFile.java b/src/main/java/org/jrimum/texgit/FlatFile.java index a470a51..e426a76 100644 --- a/src/main/java/org/jrimum/texgit/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/FlatFile.java @@ -8,7 +8,7 @@ public interface FlatFile extends TextListStream { public G createRecord(String idType); - public void addRecord(G record); + public FlatFile addRecord(G record); public G getRecord(String idName); @@ -16,17 +16,17 @@ public interface FlatFile extends TextListStream { // Grupos de Registros (Registros que se repetem) - public void addRecords(String idName, Collection records); + public FlatFile addRecords(String idName, Collection records); - public void setRecords(String idName, Collection records); + public FlatFile setRecords(String idName, Collection records); public Collection getRecords(String idName); // Todos os Registros - public void addAllRecords(Collection records); + public FlatFile addAllRecords(Collection records); - public void setAllRecords(Collection records); + public FlatFile setAllRecords(Collection records); public Collection getAllRecords(); diff --git a/src/main/java/org/jrimum/texgit/Record.java b/src/main/java/org/jrimum/texgit/Record.java index d884577..eee8e0d 100644 --- a/src/main/java/org/jrimum/texgit/Record.java +++ b/src/main/java/org/jrimum/texgit/Record.java @@ -8,11 +8,11 @@ public interface Record extends TextStream{ - public void setValue(String fieldName, G value); + public Record setValue(String fieldName, G value); public G getValue(String fieldName); - public void addInnerRecord(Record record); + public Record addInnerRecord(Record record); public List getInnerRecords(); } From c542d2cf9252e14439a5970ed0706856184e8fa9 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 4 Jan 2011 20:36:34 +0000 Subject: [PATCH 34/87] =?UTF-8?q?=20*=20Adapta=C3=A7=C3=A3o=20de=20alguns?= =?UTF-8?q?=20m=C3=A9todos=20a=20interface=20=20*=20Adi=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20exce=C3=A7=C3=B5es=20para=20m=C3=A9todos=20ainda=20n=C3=A3o?= =?UTF-8?q?=20implementados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texgit/type/component/FlatFile.java | 36 ++++++++++--------- .../jrimum/texgit/type/component/Record.java | 8 +++-- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java index d272070..f3758cf 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java @@ -208,12 +208,14 @@ public List write(String lineEnding) { return out; } - public void addRecord(org.jrimum.texgit.Record record) { + public org.jrimum.texgit.FlatFile addRecord(org.jrimum.texgit.Record record) { if(isNotNull(record)){ Record rec = Record.class.cast(record); addRecord(rec); } + + return this; } public Collection getRecords(String idName) { @@ -234,34 +236,34 @@ public Collection getRecords(String idName) { return secRecords; } - public void addAllRecords(Collection records) { - // TODO Auto-generated method stub - + public org.jrimum.texgit.FlatFile addAllRecords(Collection records) { + // TODO IMPLEMENTAR + throw new UnsupportedOperationException("AINDA NÃO IMPLEMENTADO!"); } - public void addRecords(String idName, Collection records) { - // TODO Auto-generated method stub - + public org.jrimum.texgit.FlatFile addRecords(String idName, Collection records) { + // TODO IMPLEMENTAR + throw new UnsupportedOperationException("AINDA NÃO IMPLEMENTADO!"); } public Collection getAllRecords() { - // TODO Auto-generated method stub - return null; + // TODO IMPLEMENTAR + throw new UnsupportedOperationException("AINDA NÃO IMPLEMENTADO!"); } public org.jrimum.texgit.Record removeRecord(String idName) { - // TODO Auto-generated method stub - return null; + // TODO IMPLEMENTAR + throw new UnsupportedOperationException("AINDA NÃO IMPLEMENTADO!"); } - public void setAllRecords(Collection records) { - // TODO Auto-generated method stub - + public org.jrimum.texgit.FlatFile setAllRecords(Collection records) { + // TODO IMPLEMENTAR + throw new UnsupportedOperationException("AINDA NÃO IMPLEMENTADO!"); } - public void setRecords(String idName, Collection records) { - // TODO Auto-generated method stub - + public org.jrimum.texgit.FlatFile setRecords(String idName, Collection records) { + // TODO IMPLEMENTAR + throw new UnsupportedOperationException("AINDA NÃO IMPLEMENTADO!"); } public Set getRepitablesRecords() { diff --git a/src/main/java/org/jrimum/texgit/type/component/Record.java b/src/main/java/org/jrimum/texgit/type/component/Record.java index 0c9b03d..5ef470f 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Record.java +++ b/src/main/java/org/jrimum/texgit/type/component/Record.java @@ -306,7 +306,7 @@ public boolean isMyRecord(String idName){ return is; } - public void addInnerRecord(org.jrimum.texgit.Record record) { + public org.jrimum.texgit.Record addInnerRecord(org.jrimum.texgit.Record record) { if(isNotNull(record)){ if(isNull(this.innerRecords)) @@ -318,6 +318,8 @@ public void addInnerRecord(org.jrimum.texgit.Record record) { throw new IllegalArgumentException("Record fora de scopo!"); } + + return this; } public List getInnerRecords() { @@ -339,12 +341,14 @@ public G getValue(String fieldName) { } @SuppressWarnings("unchecked") - public void setValue(String fieldName, G value) { + public org.jrimum.texgit.Record setValue(String fieldName, G value) { org.jrimum.texgit.type.Field f = (Field) getField(fieldName); if(isNotNull(f)) f.setValue(value); + + return this; } public String getName() { From 66edd1496fe4bb619fde5b4d1787a71fb8faaa17 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 4 Jan 2011 23:05:16 +0000 Subject: [PATCH 35/87] * URI do schema agora com url do projeto --- src/main/resources/TexgitSchema.xsd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/TexgitSchema.xsd b/src/main/resources/TexgitSchema.xsd index 71ac0ba..235d732 100644 --- a/src/main/resources/TexgitSchema.xsd +++ b/src/main/resources/TexgitSchema.xsd @@ -2,8 +2,8 @@ + xmlns:txg="http://jrimum.org/texgit" + targetNamespace="http://jrimum.org/texgit"> From 9c8282ce99fdd1907af6a2cbaea2f172e8ac208a Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Wed, 5 Jan 2011 03:20:42 +0000 Subject: [PATCH 36/87] * URI do schema agora com url do projeto --- src/main/java/org/jrimum/texgit/language/ObjectFactory.java | 4 ++-- src/main/java/org/jrimum/texgit/language/package-info.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/language/ObjectFactory.java b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java index ee67278..be51510 100644 --- a/src/main/java/org/jrimum/texgit/language/ObjectFactory.java +++ b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java @@ -27,7 +27,7 @@ public class ObjectFactory { private final static QName TEXGIT_QNAME = new QName( - "http://gilmatryx.googlepages.com/Texgit", "Texgit"); + "http://jrimum.org/texgit", "Texgit"); /** * Create a new ObjectFactory that can be used to create new instances of @@ -121,7 +121,7 @@ public MetaFiller createMetaFiller() { * Create an instance of {@link JAXBElement }{@code <}{@link MetaTexgit }{@code >}} * */ - @XmlElementDecl(namespace = "http://gilmatryx.googlepages.com/Texgit", name = "Texgit") + @XmlElementDecl(namespace = "http://jrimum.org/texgit", name = "Texgit") public JAXBElement createTexgit(MetaTexgit value) { return new JAXBElement(TEXGIT_QNAME, MetaTexgit.class, null, value); diff --git a/src/main/java/org/jrimum/texgit/language/package-info.java b/src/main/java/org/jrimum/texgit/language/package-info.java index 2315ae0..e5b650a 100644 --- a/src/main/java/org/jrimum/texgit/language/package-info.java +++ b/src/main/java/org/jrimum/texgit/language/package-info.java @@ -7,6 +7,6 @@ // Generated on: 2008.08.03 at 12:27:56 AM GMT-03:00 // -@javax.xml.bind.annotation.XmlSchema(namespace = "http://gilmatryx.googlepages.com/Texgit") +@javax.xml.bind.annotation.XmlSchema(namespace = "http://jrimum.org/texgit") package org.jrimum.texgit.language; From 7d5026e9296ca179a696f5fbd3bf3ebdd3de1ecf Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 1 Aug 2011 04:21:10 +0000 Subject: [PATCH 37/87] Project config --- .classpath | 5 +++-- .project | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.classpath b/.classpath index c641afd..c98fc4a 100644 --- a/.classpath +++ b/.classpath @@ -2,9 +2,10 @@ + - - + + diff --git a/.project b/.project index 395456c..8649891 100644 --- a/.project +++ b/.project @@ -6,24 +6,24 @@ - org.eclipse.wst.common.project.facet.core.builder + org.eclipse.jdt.core.javabuilder - org.eclipse.jdt.core.javabuilder + org.maven.ide.eclipse.maven2Builder - org.maven.ide.eclipse.maven2Builder + org.eclipse.m2e.core.maven2Builder - org.maven.ide.eclipse.maven2Nature + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature - org.eclipse.wst.common.project.facet.core.nature + org.maven.ide.eclipse.maven2Nature From 533133b35ce26cc918ab90fac0dfe77c03fc9e27 Mon Sep 17 00:00:00 2001 From: Renato Atilio Date: Wed, 3 Aug 2011 18:53:39 +0000 Subject: [PATCH 38/87] Possibilidade de utilizacao de um InputStream alem do File para carregamento do arquivo de layout. Criacao de uma nova tag opcional truncate"="(true|false)" para truncar campos na escrita em vez de disparar uma excecao sobre diferenca de tamanhos, quando o campo do setValue() ultrapassar o tamanho definido. --- pom.xml | 2 +- src/main/java/org/jrimum/texgit/Texgit.java | 29 +++++++++++++++---- .../texgit/engine/FixedFieldBuilder.java | 1 + .../jrimum/texgit/engine/TexgitManager.java | 17 ++++------- .../jrimum/texgit/engine/TexgitXmlReader.java | 12 +++----- .../org/jrimum/texgit/language/MetaField.java | 27 +++++++++++++++++ .../org/jrimum/texgit/type/FixedLength.java | 4 +++ .../texgit/type/component/BlockOfFields.java | 20 +++++++++++++ .../texgit/type/component/FixedField.java | 26 +++++++++++++++-- src/main/resources/TexgitSchema.xsd | 2 ++ 10 files changed, 112 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 3d89f08..06ab4f5 100644 --- a/pom.xml +++ b/pom.xml @@ -151,7 +151,7 @@ org.jrimum utilix - 0.2.3-SNAPSHOT + 0.3.1-SNAPSHOT diff --git a/src/main/java/org/jrimum/texgit/Texgit.java b/src/main/java/org/jrimum/texgit/Texgit.java index cbe166b..f50f77d 100644 --- a/src/main/java/org/jrimum/texgit/Texgit.java +++ b/src/main/java/org/jrimum/texgit/Texgit.java @@ -4,29 +4,46 @@ import static org.jrimum.utilix.Objects.isNotNull; import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; import org.jrimum.texgit.engine.TexgitManager; public final class Texgit { - public static final FlatFile createFlatFile(File xmlDef) + public static final FlatFile createFlatFile(File xmlDefFile) throws TexgitException { - if (isNotNull(xmlDef)){ + try { + + if (isNotNull(xmlDefFile)) + return createFlatFile(new FileInputStream(xmlDefFile)); + + } catch (Exception e) { + throw new TexgitException(e); + } + + return null; + } + + public static final FlatFile createFlatFile(InputStream xmlDefStream) + throws TexgitException { + + if (isNotNull(xmlDefStream)){ - return TexgitManager.buildFlatFile(xmlDef); + return TexgitManager.buildFlatFile(xmlDefStream); } return null; } - public static final FlatFile createFlatFile(String xmlDef) + public static final FlatFile createFlatFile(String xmlDefFilePath) throws TexgitException { try { - if (isNotBlank(xmlDef)) - return createFlatFile(new File(xmlDef)); + if (isNotBlank(xmlDefFilePath)) + return createFlatFile(new File(xmlDefFilePath)); } catch (Exception e) { throw new TexgitException(e); diff --git a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java index fec6a78..29ab1c7 100644 --- a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java @@ -131,6 +131,7 @@ private static FixedField getInstance(MetaField metaField) fField.setFixedLength(metaField.getLength()); fField.setFiller(getFiller(metaField)); fField.setBlankAccepted(metaField.isBlankAccepted()); + fField.setTruncate(metaField.isTruncate()); if(isNotNull(formatter)) fField.setFormatter(formatter); diff --git a/src/main/java/org/jrimum/texgit/engine/TexgitManager.java b/src/main/java/org/jrimum/texgit/engine/TexgitManager.java index 3d9156e..dd253bc 100644 --- a/src/main/java/org/jrimum/texgit/engine/TexgitManager.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitManager.java @@ -1,27 +1,23 @@ package org.jrimum.texgit.engine; -import java.io.File; +import java.io.InputStream; import org.jrimum.texgit.FlatFile; +import org.jrimum.texgit.Record; import org.jrimum.texgit.TexgitException; import org.jrimum.texgit.language.MetaTexgit; - - public class TexgitManager { - @SuppressWarnings("unchecked") - public static org.jrimum.texgit.FlatFile buildFlatFile(File xmlDef) { + public static FlatFile buildFlatFile(InputStream xmlDefStream) { - org.jrimum.texgit.FlatFile iFlatFile = null; + FlatFile iFlatFile = null; try { - MetaTexgit tgMeta = TexgitXmlReader.parse(xmlDef); + MetaTexgit tgMeta = TexgitXmlReader.parse(xmlDefStream); - FlatFile ff = FlatFileBuilder.build(tgMeta.getFlatFile()); - - iFlatFile = ff; + iFlatFile = FlatFileBuilder.build(tgMeta.getFlatFile()); } catch (Exception e) { throw new TexgitException(e); @@ -29,5 +25,4 @@ public static org.jrimum.texgit.FlatFile buildFlatFile return iFlatFile; } - } \ No newline at end of file diff --git a/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java index bc32aa7..c479fa2 100644 --- a/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java @@ -3,9 +3,9 @@ import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; import static org.jrimum.utilix.Objects.isNotNull; -import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.InputStream; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; @@ -23,11 +23,11 @@ class TexgitXmlReader { - public static MetaTexgit parse(File xmlDef) throws TexgitException { + public static MetaTexgit parse(InputStream xmlDefStream) throws TexgitException { MetaTexgit txg = null; - if (isNotNull(xmlDef)) { + if (isNotNull(xmlDefStream)) { try { @@ -45,8 +45,7 @@ public static MetaTexgit parse(File xmlDef) throws TexgitException { aUnmarshaller.setEventHandler(new TexgitSchemaValidator()); - txg = (MetaTexgit) aUnmarshaller.unmarshal(new FileInputStream( - xmlDef)); + txg = (MetaTexgit) aUnmarshaller.unmarshal(xmlDefStream); } catch (SAXException e) { @@ -56,9 +55,6 @@ public static MetaTexgit parse(File xmlDef) throws TexgitException { throw new TexgitLanguageException(e); - } catch (FileNotFoundException e) { - - throw new TexgitLanguageException(e); } } diff --git a/src/main/java/org/jrimum/texgit/language/MetaField.java b/src/main/java/org/jrimum/texgit/language/MetaField.java index cd6bccc..c3e1750 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaField.java +++ b/src/main/java/org/jrimum/texgit/language/MetaField.java @@ -39,6 +39,8 @@ public class MetaField { @XmlAttribute protected Boolean blankAccepted; @XmlAttribute + protected Boolean truncate; + @XmlAttribute protected EnumFormats format; @XmlAttribute(required = true) protected int length; @@ -117,6 +119,31 @@ public boolean isBlankAccepted() { public void setBlankAccepted(Boolean value) { this.blankAccepted = value; } + + /** + * Gets the value of the truncate property. + * + * @return possible object is {@link Boolean } + * + */ + public boolean isTruncate() { + if (truncate == null) { + return false; + } else { + return truncate; + } + } + + /** + * Sets the value of the blankAccepted property. + * + * @param value + * allowed object is {@link Boolean } + * + */ + public void setTruncate(Boolean value) { + this.truncate = value; + } /** * Gets the value of the format property. diff --git a/src/main/java/org/jrimum/texgit/type/FixedLength.java b/src/main/java/org/jrimum/texgit/type/FixedLength.java index b3dd129..c339e56 100644 --- a/src/main/java/org/jrimum/texgit/type/FixedLength.java +++ b/src/main/java/org/jrimum/texgit/type/FixedLength.java @@ -3,4 +3,8 @@ public interface FixedLength extends Fixed{ public Integer getFixedLength(); + + public boolean isTruncate(); + + public void setTruncate(boolean truncate); } diff --git a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index e3ce21e..6cd9b87 100644 --- a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -29,6 +29,13 @@ public class BlockOfFields extends AbstractStringOfFields> impleme */ private Integer instantLength; + /** + *

+ * Ao ultrapassar o tamanho, define se pode truncar ou se dispara uma exceção. + *

+ */ + private boolean truncate; + /** * */ @@ -106,6 +113,11 @@ public String write() { str = super.write(); instantLength = str.length(); + + if (isTruncate() && instantLength > getFixedLength()) { + str = str.substring(0, getFixedLength()); + instantLength = getFixedLength(); + } isFixedAsDefined(); @@ -173,4 +185,12 @@ private void setSize(Integer size) { else throw new IllegalArgumentException(format("Tamanho inválido [%s]!", size)); } + + public boolean isTruncate() { + return this.truncate; + } + + public void setTruncate(boolean truncate) { + this.truncate = truncate; + } } diff --git a/src/main/java/org/jrimum/texgit/type/component/FixedField.java b/src/main/java/org/jrimum/texgit/type/component/FixedField.java index ffb723b..c63f52b 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/component/FixedField.java @@ -35,6 +35,13 @@ public class FixedField extends Field implements org.jrimum.texgit.type.Fi *

*/ private Integer instantLength; + + /** + *

+ * Ao ultrapassar o tamanho, define se pode truncar ou se dispara uma exceção. + *

+ */ + private boolean truncate; /** @@ -107,6 +114,11 @@ public String write() { instantLength = str.length(); + if (isTruncate() && instantLength > getFixedLength()) { + str = str.substring(0, getFixedLength()); + instantLength = getFixedLength(); + } + isFixedAsDefined(); return str; @@ -154,15 +166,25 @@ public void setFiller(Filler filler) { throw new IllegalArgumentException(format("Preenchedor inválido [%s]!",filler)); } + public boolean isTruncate() { + return this.truncate; + } + + public void setTruncate(boolean truncate) { + this.truncate = truncate; + } + + @Override public String toString() { return format( - "%s FixedField [length=%s, instantLength=%s, filler=%s]", + "%s FixedField [length=%s, instantLength=%s, filler=%s, truncate=%s]", super.toString() , Objects.whenNull(this.length, EMPTY) , Objects.whenNull(this.instantLength, EMPTY) - , Objects.whenNull(this.filler, EMPTY)); + , Objects.whenNull(this.filler, EMPTY) + , Objects.whenNull(this.truncate, EMPTY)); } } diff --git a/src/main/resources/TexgitSchema.xsd b/src/main/resources/TexgitSchema.xsd index 235d732..34fb285 100644 --- a/src/main/resources/TexgitSchema.xsd +++ b/src/main/resources/TexgitSchema.xsd @@ -229,6 +229,8 @@ default=" " /> + From 0de43eb9a5d1a3b7c669920f072b962f0b8f504b Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Aug 2011 00:16:05 +0000 Subject: [PATCH 39/87] =?UTF-8?q?Revis=C3=A3o=20=20*=20Mantendo=20generali?= =?UTF-8?q?za=C3=A7=C3=A3o=20e=20evitando=20warning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/type/component/Record.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/Record.java b/src/main/java/org/jrimum/texgit/type/component/Record.java index 5ef470f..d510845 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Record.java +++ b/src/main/java/org/jrimum/texgit/type/component/Record.java @@ -332,7 +332,7 @@ public G getValue(String fieldName) { G value = null; - org.jrimum.texgit.type.Field f = getField(fieldName); + org.jrimum.texgit.type.Field f = getField(fieldName); if(isNotNull(f)) value = (G) f.getValue(); From bd7a63167a321df9502c3c98bb23e60834572bcc Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Aug 2011 00:17:08 +0000 Subject: [PATCH 40/87] =?UTF-8?q?Revis=C3=A3o=20=20*=20Modifica=C3=A7?= =?UTF-8?q?=C3=A3o=20para=20evitar=20cria=C3=A7=C3=A3o=20de=20objetos=20st?= =?UTF-8?q?rings=20desnecess=C3=A1rios=20=20*=20Refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jrimum/texgit/type/component/Field.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index f0ee2b0..f5f6ef5 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -206,11 +206,22 @@ private void readStringOrNumericField(String str) { str = parseNumber(str); - Class c = value.getClass(); - - for (Constructor cons : c.getConstructors()) { + Class clazz = value.getClass(); + + if(clazz.equals(String.class)){ + value = (G) str; + }else{ + readNumeric(clazz,str); + } + } + + @SuppressWarnings("unchecked") + private void readNumeric(Class clazz, String str) { + + for (Constructor cons : clazz.getConstructors()) { if (cons.getParameterTypes().length == 1){ + if (cons.getParameterTypes()[0].equals(String.class)){ try { @@ -224,7 +235,7 @@ private void readStringOrNumericField(String str) { } } } - + public String write() { try{ From 7175d2ad16aaf392b106be1dd9d88231d711dd58 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Aug 2011 00:17:32 +0000 Subject: [PATCH 41/87] =?UTF-8?q?Revis=C3=A3o=20=20*=20Modifica=C3=A7?= =?UTF-8?q?=C3=A3o=20para=20vers=C3=A3o=20atual?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 06ab4f5..3d89f08 100644 --- a/pom.xml +++ b/pom.xml @@ -151,7 +151,7 @@ org.jrimum utilix - 0.3.1-SNAPSHOT + 0.2.3-SNAPSHOT From 7a6e0b6717a376c5784889b817dd031732046bae Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Aug 2011 04:46:11 +0000 Subject: [PATCH 42/87] =?UTF-8?q?Revis=C3=A3o:=20=20*=20Organize=20imports?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java index c479fa2..0d87e9e 100644 --- a/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java @@ -3,8 +3,6 @@ import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; import static org.jrimum.utilix.Objects.isNotNull; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.InputStream; import javax.xml.bind.JAXBContext; From 22e1a31d40ea7b70e7018eb370cbe76ac5bfb566 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 19 Aug 2011 04:46:52 +0000 Subject: [PATCH 43/87] =?UTF-8?q?Revis=C3=A3o:=20=20*=20Doc=20=20*=20Gener?= =?UTF-8?q?ics=20=20*=20Serial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texgit/language/MetaGroupFields.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java b/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java index c9c8c64..4768856 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java +++ b/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java @@ -24,10 +24,6 @@ * Agregado de fields. *

* - * - * - * - * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "MetaGroupFields", propOrder = { "idType", "fields", @@ -113,27 +109,33 @@ public void setSequencialNumber(MetaOrderedField value) { this.sequencialNumber = value; } - @SuppressWarnings("serial") public static class IdType extends JAXBElement { + /** + * {@code serialVersionUID = -8934480908648452108L} + */ + private static final long serialVersionUID = -8934480908648452108L; + protected final static QName NAME = new QName("", "IdType"); - @SuppressWarnings("unchecked") public IdType(MetaOrderedField value) { - super(NAME, ((Class) MetaOrderedField.class), + super(NAME, ((Class) MetaOrderedField.class), MetaGroupFields.class, value); } } - @SuppressWarnings("serial") public static class SequencialNumber extends JAXBElement { + /** + * {@code serialVersionUID = 3923837730914132777L} + */ + private static final long serialVersionUID = 3923837730914132777L; + protected final static QName NAME = new QName("", "SequencialNumber"); - @SuppressWarnings("unchecked") public SequencialNumber(MetaOrderedField value) { - super(NAME, ((Class) MetaOrderedField.class), + super(NAME, ((Class) MetaOrderedField.class), MetaGroupFields.class, value); } From 328c86c97d85d57622b4068b75bfabee66d53e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B4mulo=20Augusto?= Date: Tue, 4 Oct 2011 07:33:55 +0000 Subject: [PATCH 44/87] =?UTF-8?q?#85:=20Configura=C3=A7=C3=A3o=20b=C3=A1si?= =?UTF-8?q?ca=20para=20colocar=20o=20prefixo=20"jrimum"=20no=20nome=20dos?= =?UTF-8?q?=20JARs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .settings/org.eclipse.core.resources.prefs | 6 ++++- pom.xml | 29 ++++++++-------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index cfaf892..2f1155f 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,3 +1,7 @@ -#Sun Jul 11 12:18:41 GMT-03:00 2010 +#Fri Sep 23 00:03:02 GMT-03:00 2011 eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 encoding/=UTF-8 diff --git a/pom.xml b/pom.xml index 3d89f08..bdbbba1 100644 --- a/pom.xml +++ b/pom.xml @@ -27,11 +27,6 @@ http://www.jrimum.org/texgit - - hudson - http://localhost:8080 - - scm:svn:http://www.jrimum.org/svn/texgit scm:svn:http://www.jrimum.org/svn/texgit @@ -57,9 +52,11 @@ UTF-8 UTF-8 + jrimum-${project.artifactId}-${project.version} + ${project.build.finalName} org.apache.maven.plugins @@ -73,7 +70,6 @@ maven-assembly-plugin - 2.2 src/main/assembly/texgit-dependencias-jrimum.xml @@ -100,6 +96,7 @@ org/jrimum/texgit/**/* + org/jrimum/texgit/excludes/**/* org/jrimum/texgit/**/*$* @@ -109,10 +106,13 @@ org.apache.maven.plugins maven-source-plugin 2.1.2 + + ${project.build.finalName} + attach-sources - verify + package jar @@ -124,10 +124,13 @@ org.apache.maven.plugins maven-javadoc-plugin 2.7 + + ${project.build.finalName} + attach-javadoc - verify + package jar @@ -137,16 +140,6 @@ - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.7 - - - - org.jrimum From 0280437f85292f48f18c82a09cfc538d5827d54b Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 24 Oct 2011 16:04:23 +0000 Subject: [PATCH 45/87] Update do {{{JUnit}}} --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bdbbba1..6992a50 100644 --- a/pom.xml +++ b/pom.xml @@ -161,7 +161,7 @@ junit junit - 4.8.1 + 4.8.2 test From 96abf20f9a59a3f7520f82541809499d4ad7da11 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 24 Oct 2011 16:06:41 +0000 Subject: [PATCH 46/87] Config --- .classpath | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.classpath b/.classpath index c98fc4a..6beaa4f 100644 --- a/.classpath +++ b/.classpath @@ -2,7 +2,7 @@ - + From c9ea98dc3637eadb79bda86e1ab72919e1c52886 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 21 Nov 2011 17:39:54 +0000 Subject: [PATCH 47/87] =?UTF-8?q?[jri:#32=20Infra=20Maven]=20=20*=20Adi?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20reposit=C3=B3rio=20de=20distribui=C3=A7?= =?UTF-8?q?=C3=A3o=20para=20snapshots?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pom.xml b/pom.xml index 6992a50..2fe1e70 100644 --- a/pom.xml +++ b/pom.xml @@ -165,6 +165,13 @@ test
+ + + + org.jrimum.snapshots + http://jrimum.org/maven/content/repositories/org.jrimum.snapshots/ + + From e0f6d7975c2e2b2961ad892a537dfb468823d7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=B4mulo=20Augusto?= Date: Mon, 21 Nov 2011 22:20:51 +0000 Subject: [PATCH 48/87] =?UTF-8?q?Goal=20"clean"=20acrescentado=20para=20ex?= =?UTF-8?q?ecutar=20na=20fase=20"initialiaze",=20antes=20do=20projeto=20se?= =?UTF-8?q?r=20constru=C3=ADdo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pom.xml b/pom.xml index 2fe1e70..aaa5bfd 100644 --- a/pom.xml +++ b/pom.xml @@ -137,6 +137,20 @@ + + + maven-clean-plugin + 2.4.1 + + + auto-clean + initialize + + clean + + + + From 3b5aa9a89cdf790d69822d54c247d5a6ef26a7be Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 21 Nov 2011 23:40:41 +0000 Subject: [PATCH 49/87] =?UTF-8?q?Configura=C3=A7=C3=A3o=20do=20plugin=20ma?= =?UTF-8?q?ven=20no=20eclipse,=20sugest=C3=B5es=20do=20pr=C3=B3prio=20ecli?= =?UTF-8?q?pse.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 2 +- pom.xml | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/.classpath b/.classpath index 6beaa4f..d28afc0 100644 --- a/.classpath +++ b/.classpath @@ -2,8 +2,8 @@ - + diff --git a/pom.xml b/pom.xml index aaa5bfd..ee44c47 100644 --- a/pom.xml +++ b/pom.xml @@ -152,6 +152,41 @@ + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + + org.apache.maven.plugins + + + maven-clean-plugin + + + [2.4.1,) + + + clean + + + + + + + + + + + + From 2dc99cb80b0f61d9f0cfb7eae0d207bde758d90a Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 22 Nov 2011 17:47:41 +0000 Subject: [PATCH 50/87] =?UTF-8?q?Remo=C3=A7=C3=A3o=20do=20plugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 48 ------------------------------------------------ 1 file changed, 48 deletions(-) diff --git a/pom.xml b/pom.xml index ee44c47..102eec1 100644 --- a/pom.xml +++ b/pom.xml @@ -138,55 +138,7 @@ - - maven-clean-plugin - 2.4.1 - - - auto-clean - initialize - - clean - - - - - - - - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - - org.apache.maven.plugins - - - maven-clean-plugin - - - [2.4.1,) - - - clean - - - - - - - - - - - - From faa49c4bce3607f63eb3d4d549461cd44badd42a Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 28 Nov 2011 02:46:57 +0000 Subject: [PATCH 51/87] UPDATE --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 102eec1..2589864 100644 --- a/pom.xml +++ b/pom.xml @@ -144,7 +144,7 @@ org.jrimum - utilix + jrimum-utilix 0.2.3-SNAPSHOT From 40ab4f096be082c2a17605cfe495a8e230546ca7 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Mon, 28 Nov 2011 02:50:20 +0000 Subject: [PATCH 52/87] =?UTF-8?q?Adicionando=20informa=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20documenta=C3=A7=C3=A3o=20e=20lincen=C3=A7a=20de=20acordo=20c?= =?UTF-8?q?om=20as=20datas=20dos=20primeiros=20versionamentos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/FlatFile.java | 33 +++++++++++++++ src/main/java/org/jrimum/texgit/Record.java | 42 ++++++++++++++++--- src/main/java/org/jrimum/texgit/Texgit.java | 42 ++++++++++++++++--- .../org/jrimum/texgit/TexgitException.java | 38 ++++++++++++++--- .../org/jrimum/texgit/TextListStream.java | 32 ++++++++++++++ .../texgit/engine/FixedFieldBuilder.java | 32 ++++++++++++++ .../jrimum/texgit/engine/FlatFileBuilder.java | 32 ++++++++++++++ .../jrimum/texgit/engine/RecordBuilder.java | 32 ++++++++++++++ .../jrimum/texgit/engine/RecordFactory.java | 32 ++++++++++++++ .../engine/TexgitLanguageException.java | 32 ++++++++++++++ .../jrimum/texgit/engine/TexgitManager.java | 32 ++++++++++++++ .../texgit/engine/TexgitSchemaValidator.java | 32 ++++++++++++++ .../jrimum/texgit/engine/TexgitXmlReader.java | 32 ++++++++++++++ .../jrimum/texgit/language/EnumFormats.java | 28 +++++++++++++ .../texgit/language/EnumFormatsTypes.java | 28 +++++++++++++ .../jrimum/texgit/language/EnumPaddings.java | 28 +++++++++++++ .../org/jrimum/texgit/language/EnumSide.java | 28 +++++++++++++ .../org/jrimum/texgit/language/EnumTypes.java | 28 +++++++++++++ .../org/jrimum/texgit/language/MetaField.java | 28 +++++++++++++ .../jrimum/texgit/language/MetaFiller.java | 28 +++++++++++++ .../jrimum/texgit/language/MetaFlatFile.java | 28 +++++++++++++ .../jrimum/texgit/language/MetaFormatter.java | 28 +++++++++++++ .../texgit/language/MetaGroupFields.java | 28 +++++++++++++ .../texgit/language/MetaGroupRecords.java | 28 +++++++++++++ .../jrimum/texgit/language/MetaLayout.java | 28 +++++++++++++ .../texgit/language/MetaOrderedField.java | 28 +++++++++++++ .../jrimum/texgit/language/MetaRecord.java | 29 +++++++++++++ .../jrimum/texgit/language/MetaTexgit.java | 29 +++++++++++++ .../jrimum/texgit/language/ObjectFactory.java | 28 +++++++++++++ .../jrimum/texgit/language/package-info.java | 28 +++++++++++++ .../texgit/type/AbstractStringOfFields.java | 33 +++++++++++++++ .../java/org/jrimum/texgit/type/Field.java | 33 +++++++++++++++ .../java/org/jrimum/texgit/type/Fixed.java | 33 ++++++++++++++- .../org/jrimum/texgit/type/FixedField.java | 33 +++++++++++++++ .../org/jrimum/texgit/type/FixedLength.java | 32 ++++++++++++++ .../org/jrimum/texgit/type/FixedSize.java | 32 ++++++++++++++ .../texgit/type/component/BlockOfFields.java | 32 ++++++++++++++ .../texgit/type/component/CommonFiller.java | 32 ++++++++++++++ .../jrimum/texgit/type/component/Field.java | 33 +++++++++++++++ .../jrimum/texgit/type/component/Filler.java | 3 -- .../texgit/type/component/FixedField.java | 33 +++++++++++++++ .../texgit/type/component/FlatFile.java | 32 ++++++++++++++ .../jrimum/texgit/type/component/Record.java | 32 ++++++++++++++ .../texgit/type/component/RecordFactory.java | 33 +++++++++++++++ .../jrimum/texgit/type/component/Side.java | 5 +-- src/main/resources/TexgitSchema.xsd | 34 ++++++++++++++- 46 files changed, 1361 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/FlatFile.java b/src/main/java/org/jrimum/texgit/FlatFile.java index e426a76..4054a4d 100644 --- a/src/main/java/org/jrimum/texgit/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/FlatFile.java @@ -1,7 +1,40 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit; import java.util.Collection; +/** + * @author Gilmar P.S.L. + * + * @param + */ public interface FlatFile extends TextListStream { // Registros individuais diff --git a/src/main/java/org/jrimum/texgit/Record.java b/src/main/java/org/jrimum/texgit/Record.java index eee8e0d..a63bbf1 100644 --- a/src/main/java/org/jrimum/texgit/Record.java +++ b/src/main/java/org/jrimum/texgit/Record.java @@ -1,18 +1,48 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit; import java.util.List; import org.jrimum.utilix.text.TextStream; +/** + * @author Gilmar P.S.L. + * + */ +public interface Record extends TextStream { - -public interface Record extends TextStream{ - public Record setValue(String fieldName, G value); - + public G getValue(String fieldName); - + public Record addInnerRecord(Record record); - + public List getInnerRecords(); } diff --git a/src/main/java/org/jrimum/texgit/Texgit.java b/src/main/java/org/jrimum/texgit/Texgit.java index f50f77d..d7e2524 100644 --- a/src/main/java/org/jrimum/texgit/Texgit.java +++ b/src/main/java/org/jrimum/texgit/Texgit.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit; import static org.apache.commons.lang.StringUtils.isNotBlank; @@ -9,6 +37,10 @@ import org.jrimum.texgit.engine.TexgitManager; +/** + * @author Gilmar P.S.L. + * + */ public final class Texgit { public static final FlatFile createFlatFile(File xmlDefFile) @@ -22,15 +54,15 @@ public static final FlatFile createFlatFile(File xmlDefFile) } catch (Exception e) { throw new TexgitException(e); } - + return null; } - + public static final FlatFile createFlatFile(InputStream xmlDefStream) throws TexgitException { - if (isNotNull(xmlDefStream)){ - + if (isNotNull(xmlDefStream)) { + return TexgitManager.buildFlatFile(xmlDefStream); } @@ -48,7 +80,7 @@ public static final FlatFile createFlatFile(String xmlDefFilePath) } catch (Exception e) { throw new TexgitException(e); } - + return null; } } diff --git a/src/main/java/org/jrimum/texgit/TexgitException.java b/src/main/java/org/jrimum/texgit/TexgitException.java index 04fdb6d..b518c31 100644 --- a/src/main/java/org/jrimum/texgit/TexgitException.java +++ b/src/main/java/org/jrimum/texgit/TexgitException.java @@ -1,6 +1,33 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit; - /** * *

@@ -10,7 +37,6 @@ * @author Gilmar P.S.L. * * */ - @SuppressWarnings("serial") public class TexgitException extends RuntimeException { @@ -19,7 +45,7 @@ public class TexgitException extends RuntimeException { */ public TexgitException() { super(); - + } /** @@ -28,7 +54,7 @@ public TexgitException() { */ public TexgitException(String arg0, Throwable arg1) { super(arg0, arg1); - + } /** @@ -36,7 +62,7 @@ public TexgitException(String arg0, Throwable arg1) { */ public TexgitException(String arg0) { super(arg0); - + } /** @@ -44,7 +70,7 @@ public TexgitException(String arg0) { */ public TexgitException(Throwable arg0) { super(arg0); - + } } diff --git a/src/main/java/org/jrimum/texgit/TextListStream.java b/src/main/java/org/jrimum/texgit/TextListStream.java index 2d98c44..05275d7 100644 --- a/src/main/java/org/jrimum/texgit/TextListStream.java +++ b/src/main/java/org/jrimum/texgit/TextListStream.java @@ -1,9 +1,41 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit; import java.util.List; import org.jrimum.utilix.ReadWriteStream; +/** + * @author Gilmar P.S.L. + * + */ public interface TextListStream extends ReadWriteStream> { } diff --git a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java index 29ab1c7..3b5949c 100644 --- a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.engine; import static org.apache.commons.lang.StringUtils.EMPTY; @@ -23,6 +51,10 @@ import org.jrimum.texgit.type.component.Side; import org.jrimum.utilix.Dates; +/** + * @author Gilmar P.S.L. + * + */ class FixedFieldBuilder { private final static String BASE_DECIMAL_FORMAT = "0."; diff --git a/src/main/java/org/jrimum/texgit/engine/FlatFileBuilder.java b/src/main/java/org/jrimum/texgit/engine/FlatFileBuilder.java index 6998375..e0a64c7 100644 --- a/src/main/java/org/jrimum/texgit/engine/FlatFileBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/FlatFileBuilder.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.engine; import static org.jrimum.utilix.Objects.isNotNull; @@ -13,6 +41,10 @@ +/** + * @author Gilmar P.S.L. + * + */ public class FlatFileBuilder { static FlatFile build(MetaFlatFile mFlatFile) { diff --git a/src/main/java/org/jrimum/texgit/engine/RecordBuilder.java b/src/main/java/org/jrimum/texgit/engine/RecordBuilder.java index 01c972d..388591c 100644 --- a/src/main/java/org/jrimum/texgit/engine/RecordBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/RecordBuilder.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.engine; import static org.jrimum.utilix.Objects.isNotNull; @@ -15,6 +43,10 @@ +/** + * @author Gilmar P.S.L. + * + */ class RecordBuilder { @SuppressWarnings("unchecked") diff --git a/src/main/java/org/jrimum/texgit/engine/RecordFactory.java b/src/main/java/org/jrimum/texgit/engine/RecordFactory.java index a215b41..ea99f8f 100644 --- a/src/main/java/org/jrimum/texgit/engine/RecordFactory.java +++ b/src/main/java/org/jrimum/texgit/engine/RecordFactory.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.engine; import static org.apache.commons.lang.StringUtils.isNotBlank; @@ -12,6 +40,10 @@ +/** + * @author Gilmar P.S.L. + * + */ public class RecordFactory implements org.jrimum.texgit.type.component.RecordFactory { private Map name_record; diff --git a/src/main/java/org/jrimum/texgit/engine/TexgitLanguageException.java b/src/main/java/org/jrimum/texgit/engine/TexgitLanguageException.java index 923b21b..8c64d4b 100644 --- a/src/main/java/org/jrimum/texgit/engine/TexgitLanguageException.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitLanguageException.java @@ -1,7 +1,39 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.engine; import org.jrimum.texgit.TexgitException; +/** + * @author Gilmar P.S.L. + * + */ @SuppressWarnings("serial") public class TexgitLanguageException extends TexgitException { diff --git a/src/main/java/org/jrimum/texgit/engine/TexgitManager.java b/src/main/java/org/jrimum/texgit/engine/TexgitManager.java index dd253bc..773cfdf 100644 --- a/src/main/java/org/jrimum/texgit/engine/TexgitManager.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitManager.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.engine; import java.io.InputStream; @@ -7,6 +35,10 @@ import org.jrimum.texgit.TexgitException; import org.jrimum.texgit.language.MetaTexgit; +/** + * @author Gilmar P.S.L. + * + */ public class TexgitManager { public static FlatFile buildFlatFile(InputStream xmlDefStream) { diff --git a/src/main/java/org/jrimum/texgit/engine/TexgitSchemaValidator.java b/src/main/java/org/jrimum/texgit/engine/TexgitSchemaValidator.java index be769ff..41056e5 100644 --- a/src/main/java/org/jrimum/texgit/engine/TexgitSchemaValidator.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitSchemaValidator.java @@ -1,9 +1,41 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.engine; import javax.xml.bind.ValidationEvent; import javax.xml.bind.ValidationEventHandler; import javax.xml.bind.ValidationEventLocator; +/** + * @author Gilmar P.S.L. + * + */ class TexgitSchemaValidator implements ValidationEventHandler { public boolean handleEvent(ValidationEvent event) { diff --git a/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java index 0d87e9e..cfd47a0 100644 --- a/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java +++ b/src/main/java/org/jrimum/texgit/engine/TexgitXmlReader.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.engine; import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; @@ -19,6 +47,10 @@ +/** + * @author Gilmar P.S.L. + * + */ class TexgitXmlReader { public static MetaTexgit parse(InputStream xmlDefStream) throws TexgitException { diff --git a/src/main/java/org/jrimum/texgit/language/EnumFormats.java b/src/main/java/org/jrimum/texgit/language/EnumFormats.java index 0384a7c..c0ab828 100644 --- a/src/main/java/org/jrimum/texgit/language/EnumFormats.java +++ b/src/main/java/org/jrimum/texgit/language/EnumFormats.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/EnumFormatsTypes.java b/src/main/java/org/jrimum/texgit/language/EnumFormatsTypes.java index 5598362..e9e48da 100644 --- a/src/main/java/org/jrimum/texgit/language/EnumFormatsTypes.java +++ b/src/main/java/org/jrimum/texgit/language/EnumFormatsTypes.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/EnumPaddings.java b/src/main/java/org/jrimum/texgit/language/EnumPaddings.java index 47dfa87..33587c5 100644 --- a/src/main/java/org/jrimum/texgit/language/EnumPaddings.java +++ b/src/main/java/org/jrimum/texgit/language/EnumPaddings.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/EnumSide.java b/src/main/java/org/jrimum/texgit/language/EnumSide.java index ab18958..32ba029 100644 --- a/src/main/java/org/jrimum/texgit/language/EnumSide.java +++ b/src/main/java/org/jrimum/texgit/language/EnumSide.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/EnumTypes.java b/src/main/java/org/jrimum/texgit/language/EnumTypes.java index 4e8777d..ddd4cad 100644 --- a/src/main/java/org/jrimum/texgit/language/EnumTypes.java +++ b/src/main/java/org/jrimum/texgit/language/EnumTypes.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaField.java b/src/main/java/org/jrimum/texgit/language/MetaField.java index c3e1750..2ac6d74 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaField.java +++ b/src/main/java/org/jrimum/texgit/language/MetaField.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaFiller.java b/src/main/java/org/jrimum/texgit/language/MetaFiller.java index bd32200..d911be7 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaFiller.java +++ b/src/main/java/org/jrimum/texgit/language/MetaFiller.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaFlatFile.java b/src/main/java/org/jrimum/texgit/language/MetaFlatFile.java index 6c7f0d3..f1c2f16 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaFlatFile.java +++ b/src/main/java/org/jrimum/texgit/language/MetaFlatFile.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaFormatter.java b/src/main/java/org/jrimum/texgit/language/MetaFormatter.java index d8d00af..e712fca 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaFormatter.java +++ b/src/main/java/org/jrimum/texgit/language/MetaFormatter.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java b/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java index 4768856..e43ae9f 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java +++ b/src/main/java/org/jrimum/texgit/language/MetaGroupFields.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaGroupRecords.java b/src/main/java/org/jrimum/texgit/language/MetaGroupRecords.java index 338d826..d55309b 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaGroupRecords.java +++ b/src/main/java/org/jrimum/texgit/language/MetaGroupRecords.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaLayout.java b/src/main/java/org/jrimum/texgit/language/MetaLayout.java index 3dae4f1..128c7bd 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaLayout.java +++ b/src/main/java/org/jrimum/texgit/language/MetaLayout.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaOrderedField.java b/src/main/java/org/jrimum/texgit/language/MetaOrderedField.java index 2a0d97e..3638719 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaOrderedField.java +++ b/src/main/java/org/jrimum/texgit/language/MetaOrderedField.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaRecord.java b/src/main/java/org/jrimum/texgit/language/MetaRecord.java index 8a8490b..fbd3568 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaRecord.java +++ b/src/main/java/org/jrimum/texgit/language/MetaRecord.java @@ -1,3 +1,32 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ + // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/MetaTexgit.java b/src/main/java/org/jrimum/texgit/language/MetaTexgit.java index 5849e1d..8ae0fb5 100644 --- a/src/main/java/org/jrimum/texgit/language/MetaTexgit.java +++ b/src/main/java/org/jrimum/texgit/language/MetaTexgit.java @@ -1,3 +1,32 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ + // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/ObjectFactory.java b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java index be51510..b7a513b 100644 --- a/src/main/java/org/jrimum/texgit/language/ObjectFactory.java +++ b/src/main/java/org/jrimum/texgit/language/ObjectFactory.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.0 in JDK 1.6 // See http://java.sun.com/xml/jaxb diff --git a/src/main/java/org/jrimum/texgit/language/package-info.java b/src/main/java/org/jrimum/texgit/language/package-info.java index e5b650a..8c9b7fb 100644 --- a/src/main/java/org/jrimum/texgit/language/package-info.java +++ b/src/main/java/org/jrimum/texgit/language/package-info.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 03/08/2008 - 12:27:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 03/08/2008 - 12:27:56 + * + */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) // Reference Implementation, vJAXB 2.0 in JDK 1.6 diff --git a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index ba36818..4e8801d 100644 --- a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type; import static java.lang.String.format; @@ -13,6 +41,11 @@ import org.jrimum.utilix.Objects; import org.jrimum.utilix.text.TextStream; +/** + * @author Gilmar P.S.L. + * + * @param + */ @SuppressWarnings("serial") public abstract class AbstractStringOfFields> implements TextStream, List, Cloneable{ diff --git a/src/main/java/org/jrimum/texgit/type/Field.java b/src/main/java/org/jrimum/texgit/type/Field.java index 6034412..8c99b34 100644 --- a/src/main/java/org/jrimum/texgit/type/Field.java +++ b/src/main/java/org/jrimum/texgit/type/Field.java @@ -1,9 +1,42 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type; import java.text.Format; import org.jrimum.utilix.text.TextStream; +/** + * @author Gilmar P.S.L. + * + * @param + */ public interface Field extends TextStream, Cloneable{ public abstract String getName(); diff --git a/src/main/java/org/jrimum/texgit/type/Fixed.java b/src/main/java/org/jrimum/texgit/type/Fixed.java index a0b35d3..f800001 100644 --- a/src/main/java/org/jrimum/texgit/type/Fixed.java +++ b/src/main/java/org/jrimum/texgit/type/Fixed.java @@ -1,5 +1,37 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type; +/** + * @author Gilmar P.S.L. + * + */ public interface Fixed { @@ -19,6 +51,5 @@ public interface Fixed { * * @throws IllegalStateException */ - public abstract boolean isFixedAsDefined() throws IllegalStateException; } diff --git a/src/main/java/org/jrimum/texgit/type/FixedField.java b/src/main/java/org/jrimum/texgit/type/FixedField.java index e5cdd9e..a073196 100644 --- a/src/main/java/org/jrimum/texgit/type/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/FixedField.java @@ -1,8 +1,41 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type; import org.jrimum.texgit.type.component.Filler; +/** + * @author Gilmar P.S.L. + * + * @param + */ public interface FixedField extends Field, FixedLength{ /** diff --git a/src/main/java/org/jrimum/texgit/type/FixedLength.java b/src/main/java/org/jrimum/texgit/type/FixedLength.java index c339e56..c4f9143 100644 --- a/src/main/java/org/jrimum/texgit/type/FixedLength.java +++ b/src/main/java/org/jrimum/texgit/type/FixedLength.java @@ -1,5 +1,37 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type; +/** + * @author Gilmar P.S.L. + * + */ public interface FixedLength extends Fixed{ public Integer getFixedLength(); diff --git a/src/main/java/org/jrimum/texgit/type/FixedSize.java b/src/main/java/org/jrimum/texgit/type/FixedSize.java index 312f02f..1e52106 100644 --- a/src/main/java/org/jrimum/texgit/type/FixedSize.java +++ b/src/main/java/org/jrimum/texgit/type/FixedSize.java @@ -1,5 +1,37 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type; +/** + * @author Gilmar P.S.L. + * + */ public interface FixedSize extends Fixed{ public Integer getFixedSize(); diff --git a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index 6cd9b87..ffb872a 100644 --- a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type.component; import static java.lang.String.format; @@ -9,6 +37,10 @@ import org.jrimum.utilix.Collections; import org.jrimum.utilix.Objects; +/** + * @author Gilmar P.S.L. + * + */ @SuppressWarnings("serial") public class BlockOfFields extends AbstractStringOfFields> implements FixedSize, FixedLength{ diff --git a/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java b/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java index 6856532..01c17f1 100644 --- a/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java +++ b/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java @@ -1,8 +1,40 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type.component; import org.jrimum.utilix.text.Strings; +/** + * @author Gilmar P.S.L. + * + */ public enum CommonFiller { /** diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index f5f6ef5..85115d6 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type.component; import static java.lang.String.format; @@ -17,6 +45,11 @@ import org.jrimum.utilix.Objects; import org.jrimum.utilix.text.TextStream; +/** + * @author Gilmar P.S.L. + * + * @param + */ @SuppressWarnings("serial") public class Field implements org.jrimum.texgit.type.Field{ diff --git a/src/main/java/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java index cd6f046..90a03ba 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -26,8 +26,6 @@ * Criado em: 30/03/2008 - 18:17:00 * */ - - package org.jrimum.texgit.type.component; import static java.lang.String.format; @@ -70,7 +68,6 @@ * @version 0.2.1-inc * */ - @SuppressWarnings("serial") public class Filler implements Serializable{ diff --git a/src/main/java/org/jrimum/texgit/type/component/FixedField.java b/src/main/java/org/jrimum/texgit/type/component/FixedField.java index c63f52b..b3c3121 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/component/FixedField.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type.component; import static java.lang.String.format; @@ -11,6 +39,11 @@ +/** + * @author Gilmar P.S.L. + * + * @param + */ @SuppressWarnings("serial") public class FixedField extends Field implements org.jrimum.texgit.type.FixedField{ diff --git a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java index f3758cf..75c7ffb 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type.component; import static java.lang.String.format; @@ -12,6 +40,10 @@ import java.util.Set; +/** + * @author Gilmar P.S.L. + * + */ @SuppressWarnings("serial") public class FlatFile implements org.jrimum.texgit.FlatFile{ diff --git a/src/main/java/org/jrimum/texgit/type/component/Record.java b/src/main/java/org/jrimum/texgit/type/component/Record.java index d510845..7ea260b 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Record.java +++ b/src/main/java/org/jrimum/texgit/type/component/Record.java @@ -1,3 +1,31 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type.component; import static java.lang.String.format; @@ -15,6 +43,10 @@ +/** + * @author Gilmar P.S.L. + * + */ @SuppressWarnings("serial") public class Record extends BlockOfFields implements org.jrimum.texgit.Record{ diff --git a/src/main/java/org/jrimum/texgit/type/component/RecordFactory.java b/src/main/java/org/jrimum/texgit/type/component/RecordFactory.java index 694913f..734d742 100644 --- a/src/main/java/org/jrimum/texgit/type/component/RecordFactory.java +++ b/src/main/java/org/jrimum/texgit/type/component/RecordFactory.java @@ -1,7 +1,40 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ package org.jrimum.texgit.type.component; import org.jrimum.texgit.Record; +/** + * @author Gilmar P.S.L. + * + * @param + */ public interface RecordFactory { public abstract G create(String name); diff --git a/src/main/java/org/jrimum/texgit/type/component/Side.java b/src/main/java/org/jrimum/texgit/type/component/Side.java index 527938c..bd52fcf 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Side.java +++ b/src/main/java/org/jrimum/texgit/type/component/Side.java @@ -1,10 +1,9 @@ package org.jrimum.texgit.type.component; - /** - *

* Lados para alinhar campos, preenchimento ou orientações em geral. - *

+ * + * @author Gilmar P.S.L. */ public enum Side { diff --git a/src/main/resources/TexgitSchema.xsd b/src/main/resources/TexgitSchema.xsd index 34fb285..35d80b4 100644 --- a/src/main/resources/TexgitSchema.xsd +++ b/src/main/resources/TexgitSchema.xsd @@ -1,10 +1,42 @@ + + + + - Representação de classes e atributos usados para definição From c0a5605ff3a33ea8189b3543c34a39a298ed30f3 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 29 Nov 2011 22:42:31 +0000 Subject: [PATCH 53/87] =?UTF-8?q?[jri:ticket:32=2032-INFRAESTRUTURA=20=3D?= =?UTF-8?q?=20Maven]=20=20*=20Ajsutes=20para=20ficar=20no=20padr=C3=A3o=20?= =?UTF-8?q?dos=20outros=20projetos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- ...dencias-jrimum.xml => jrimum-texgit-with-dependencies.xml} | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) rename src/main/assembly/{texgit-dependencias-jrimum.xml => jrimum-texgit-with-dependencies.xml} (88%) diff --git a/pom.xml b/pom.xml index 2589864..0ede2bf 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jrimum - texgit + jrimum-texgit Projeto Texgit 0.2.0-SNAPSHOT Projeto open source de componentes de software para o domínio de negócios do Brasil. @@ -72,7 +72,7 @@ maven-assembly-plugin - src/main/assembly/texgit-dependencias-jrimum.xml + src/main/assembly/jrimum-texgit-with-dependencies.xml diff --git a/src/main/assembly/texgit-dependencias-jrimum.xml b/src/main/assembly/jrimum-texgit-with-dependencies.xml similarity index 88% rename from src/main/assembly/texgit-dependencias-jrimum.xml rename to src/main/assembly/jrimum-texgit-with-dependencies.xml index af8f797..92a944e 100644 --- a/src/main/assembly/texgit-dependencias-jrimum.xml +++ b/src/main/assembly/jrimum-texgit-with-dependencies.xml @@ -2,8 +2,7 @@ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> - - texgit-dependencias-jrimum + dep jar From d76a25d7e8b502f12c29730f7b3fa4b62bd536cc Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Fri, 3 Feb 2012 17:24:13 +0000 Subject: [PATCH 54/87] =?UTF-8?q?'''Enhancement:'''=20adi=C3=A7=C3=A3o=20d?= =?UTF-8?q?e=20mais=20algumas=20op=C3=A7=C3=B5es=20de=20cria=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jrimum/texgit/Texgit.java | 62 +++++++++++++++++---- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/Texgit.java b/src/main/java/org/jrimum/texgit/Texgit.java index d7e2524..514eee1 100644 --- a/src/main/java/org/jrimum/texgit/Texgit.java +++ b/src/main/java/org/jrimum/texgit/Texgit.java @@ -31,9 +31,11 @@ import static org.apache.commons.lang.StringUtils.isNotBlank; import static org.jrimum.utilix.Objects.isNotNull; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; +import java.net.URL; import org.jrimum.texgit.engine.TexgitManager; @@ -42,14 +44,14 @@ * */ public final class Texgit { - - public static final FlatFile createFlatFile(File xmlDefFile) + + public static final FlatFile createFlatFile(String xmlDefFilePath) throws TexgitException { try { - if (isNotNull(xmlDefFile)) - return createFlatFile(new FileInputStream(xmlDefFile)); + if (isNotBlank(xmlDefFilePath)) + return createFlatFile(new File(xmlDefFilePath)); } catch (Exception e) { throw new TexgitException(e); @@ -58,29 +60,67 @@ public static final FlatFile createFlatFile(File xmlDefFile) return null; } - public static final FlatFile createFlatFile(InputStream xmlDefStream) + public static final FlatFile createFlatFile(File xmlDefFile) throws TexgitException { - if (isNotNull(xmlDefStream)) { + try { - return TexgitManager.buildFlatFile(xmlDefStream); + if (isNotNull(xmlDefFile)) { + + return createFlatFile(new FileInputStream(xmlDefFile)); + } + + } catch (Exception e) { + throw new TexgitException(e); } return null; } - public static final FlatFile createFlatFile(String xmlDefFilePath) + public static final FlatFile createFlatFile(URL xmlDefUrl) throws TexgitException { - + try { - if (isNotBlank(xmlDefFilePath)) - return createFlatFile(new File(xmlDefFilePath)); + if (isNotNull(xmlDefUrl)) { + + return TexgitManager.buildFlatFile(xmlDefUrl.openStream()); + } } catch (Exception e) { throw new TexgitException(e); } + + + return null; + } + + public static final FlatFile createFlatFile(byte[] xmlDefBytes) + throws TexgitException { + + try { + + if (isNotNull(xmlDefBytes)) { + + return TexgitManager.buildFlatFile(new ByteArrayInputStream(xmlDefBytes)); + } + + } catch (Exception e) { + throw new TexgitException(e); + } + + return null; + } + + public static final FlatFile createFlatFile(InputStream xmlDefStream) + throws TexgitException { + + if (isNotNull(xmlDefStream)) { + + return TexgitManager.buildFlatFile(xmlDefStream); + } return null; } + } From 71f3f845f5181cb0e5ccd58b712a14d190b24e26 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Thu, 29 Nov 2012 11:35:54 +0000 Subject: [PATCH 55/87] Pequeno ajuste. --- src/main/java/org/jrimum/texgit/type/component/FlatFile.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java index 75c7ffb..fc21c9c 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java @@ -114,8 +114,6 @@ public void read(List str) { if(isNotNull(str)){ if(!str.isEmpty()){ - boolean read = true; - String line = null; int lineIndex = 0; @@ -130,6 +128,8 @@ record = recordFactory.create(id); if(isRepitable(id)){ + boolean read = true; + while(read){ if(isNull(record)) From 653dec58c217d33414bf4421abce64198b81e3d7 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Thu, 29 Nov 2012 11:37:35 +0000 Subject: [PATCH 56/87] Nova pasta exemplos. --- .classpath | 1 + pom.xml | 1 + src/main/assembly/jrimum-texgit-examples.xml | 27 ++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 src/main/assembly/jrimum-texgit-examples.xml diff --git a/.classpath b/.classpath index d28afc0..cfbfd75 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,7 @@ + diff --git a/pom.xml b/pom.xml index 0ede2bf..22e27ae 100644 --- a/pom.xml +++ b/pom.xml @@ -73,6 +73,7 @@ src/main/assembly/jrimum-texgit-with-dependencies.xml + src/main/assembly/jrimum-texgit-examples.xml diff --git a/src/main/assembly/jrimum-texgit-examples.xml b/src/main/assembly/jrimum-texgit-examples.xml new file mode 100644 index 0000000..4b921d4 --- /dev/null +++ b/src/main/assembly/jrimum-texgit-examples.xml @@ -0,0 +1,27 @@ + + examples + + zip + + + + src/examples/java + true + / + + **/*.java + + + + src/examples/resources + true + /resources + + **/** + + + + \ No newline at end of file From eb87b041ebbab6048a4a5ea9c24f8824a6a23191 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Thu, 29 Nov 2012 11:47:55 +0000 Subject: [PATCH 57/87] svn ignore content From fdd8de7ddc588671ff6ae71f2fb8465397c90d72 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 30 Apr 2013 19:55:30 -0300 Subject: [PATCH 58/87] =?UTF-8?q?Removendo=20configura=C3=A7=C3=B5es=20ecl?= =?UTF-8?q?ipse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 12 --------- .project | 29 ---------------------- .settings/org.eclipse.core.resources.prefs | 7 ------ .settings/org.eclipse.jdt.core.prefs | 13 ---------- .settings/org.maven.ide.eclipse.prefs | 9 ------- 5 files changed, 70 deletions(-) delete mode 100644 .classpath delete mode 100644 .project delete mode 100644 .settings/org.eclipse.core.resources.prefs delete mode 100644 .settings/org.eclipse.jdt.core.prefs delete mode 100644 .settings/org.maven.ide.eclipse.prefs diff --git a/.classpath b/.classpath deleted file mode 100644 index cfbfd75..0000000 --- a/.classpath +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 8649891..0000000 --- a/.project +++ /dev/null @@ -1,29 +0,0 @@ - - - Texgit - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.maven.ide.eclipse.maven2Builder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.m2e.core.maven2Nature - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - - diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 2f1155f..0000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,7 +0,0 @@ -#Fri Sep 23 00:03:02 GMT-03:00 2011 -eclipse.preferences.version=1 -encoding//src/main/java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding//src/test/java=UTF-8 -encoding//src/test/resources=UTF-8 -encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 90fc515..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,13 +0,0 @@ -#Sun Jul 11 12:23:59 GMT-03:00 2010 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.5 diff --git a/.settings/org.maven.ide.eclipse.prefs b/.settings/org.maven.ide.eclipse.prefs deleted file mode 100644 index ccb1269..0000000 --- a/.settings/org.maven.ide.eclipse.prefs +++ /dev/null @@ -1,9 +0,0 @@ -#Sun Jul 11 12:13:35 GMT-03:00 2010 -activeProfiles= -eclipse.preferences.version=1 -fullBuildGoals=process-test-resources -includeModules=false -resolveWorkspaceProjects=true -resourceFilterGoals=process-resources resources\:testResources -skipCompilerPlugin=true -version=1 From 0e876f372cd4f72149b56081d35c48403f66e10f Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 30 Apr 2013 19:56:14 -0300 Subject: [PATCH 59/87] Adicionando 'ignores' --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b8ea0ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/target +.settings +.classpath +.project From c624ca8af30d84123891549cb0dc2823a8df0c20 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Wed, 1 May 2013 18:36:13 -0300 Subject: [PATCH 60/87] update info --- pom.xml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 22e27ae..9430a68 100644 --- a/pom.xml +++ b/pom.xml @@ -18,20 +18,17 @@ - Grupo JRimum - http://www.jrimum.org/ + Projeto JRimum + http://www.jrimum.org - TRAC - http://www.jrimum.org/texgit + GitHub + http://github.com/jrimum/texgit/issues - scm:svn:http://www.jrimum.org/svn/texgit - scm:svn:http://www.jrimum.org/svn/texgit - HEAD - http://www.jrimum.org/svn/texgit + http://github.com/jrimum/texgit From 4d7bfbc7e010fefa5ebbb9d9b36e999e4b3ad936 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Sat, 21 Sep 2013 22:42:37 -0300 Subject: [PATCH 61/87] Create README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Descrição inicial. --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..0654a34 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +Texgit +====== + +O projeto Texgit é um componente e framework em Java que facilita a manipulação de arquivos Flat Files (arquivo-texto) através de objetos. + +Diversas empresas já usam o Texgit em produção e estão colaborando no Design do componente e da API. + From 249e7ef04073dd20fc5907b59bb3e54dc3f7fecf Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sat, 28 Sep 2013 20:17:58 -0300 Subject: [PATCH 62/87] Organizando arquivos ignorados no projeto. --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b8ea0ea..9873cc9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ +/bin /target -.settings .classpath +.DS_Store .project +.settings + + From 777759a760800a67598b598e69d33c38fab73225 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Sun, 13 Oct 2013 20:37:28 -0300 Subject: [PATCH 63/87] =?UTF-8?q?CLOSE=20-=20#1:=20Implementa=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20testes=20para=20funcionalidade=20LineOfFields=20http://?= =?UTF-8?q?github.com/jrimum/texgit/issues/issue/1=20=20*=20Migra=C3=A7?= =?UTF-8?q?=C3=A3o=20e=20adapta=C3=A7=C3=A3o=20das=20classes=20do=20jrimum?= =?UTF-8?q?/utilix=20=20*=20Adapta=C3=A7=C3=B5es=20para=20manter=20comport?= =?UTF-8?q?amento=20de=20classes=20migradas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jrimum/texgit/ReadWriteStream.java | 69 +++++ src/main/java/org/jrimum/texgit/Record.java | 2 - .../org/jrimum/texgit/TextListStream.java | 2 - .../CommonFiller.java => TextStream.java} | 52 +--- .../texgit/engine/FixedFieldBuilder.java | 15 +- .../texgit/type/AbstractStringOfFields.java | 2 +- .../java/org/jrimum/texgit/type/Field.java | 2 +- .../java/org/jrimum/texgit/type/Filler.java | 164 +++++++++++ .../org/jrimum/texgit/type/FixedField.java | 6 +- .../texgit/type/component/BlockOfFields.java | 4 +- .../jrimum/texgit/type/component/Field.java | 19 +- .../jrimum/texgit/type/component/Filler.java | 211 +++----------- .../jrimum/texgit/type/component/Fillers.java | 167 ++++++++++++ .../texgit/type/component/FixedField.java | 62 +++-- .../texgit/type/component/TestFiller.java | 257 ++++++++++++++++++ .../texgit/type/component/TestFixedField.java | 228 ++++++++++++++++ .../org/jrimum/utilix/excludes/TestUtil.java | 80 ++++++ 17 files changed, 1085 insertions(+), 257 deletions(-) create mode 100644 src/main/java/org/jrimum/texgit/ReadWriteStream.java rename src/main/java/org/jrimum/texgit/{type/component/CommonFiller.java => TextStream.java} (57%) create mode 100644 src/main/java/org/jrimum/texgit/type/Filler.java create mode 100644 src/main/java/org/jrimum/texgit/type/component/Fillers.java create mode 100644 src/test/java/org/jrimum/texgit/type/component/TestFiller.java create mode 100644 src/test/java/org/jrimum/texgit/type/component/TestFixedField.java create mode 100644 src/test/java/org/jrimum/utilix/excludes/TestUtil.java diff --git a/src/main/java/org/jrimum/texgit/ReadWriteStream.java b/src/main/java/org/jrimum/texgit/ReadWriteStream.java new file mode 100644 index 0000000..3435366 --- /dev/null +++ b/src/main/java/org/jrimum/texgit/ReadWriteStream.java @@ -0,0 +1,69 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 30/03/2008 - 18:17:10 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 30/03/2008 - 18:17:10 + * + */ + +package org.jrimum.texgit; + +import java.io.Serializable; + +/** + *

+ * Interface genérica e representativa de coisas que necessitam de operações de + * fluxo de escrita e leitura. + *

+ * + * @author Gilmar P.S.L. + * + * @since 0.2 + * + * @version 0.2 + */ +public interface ReadWriteStream extends Serializable { + + /** + *

+ * Escreve o tipo infomado. + *

+ * + * @return Um valor no mesmo tipo do tipo parametrizado + * @since 0.2 + */ + G write(); + + /** + *

+ * Lê o tipo informado. + *

+ * + * @param g - Valor a ser lido + * + * @since 0.2 + */ + void read(G g); + +} diff --git a/src/main/java/org/jrimum/texgit/Record.java b/src/main/java/org/jrimum/texgit/Record.java index a63bbf1..9271f4f 100644 --- a/src/main/java/org/jrimum/texgit/Record.java +++ b/src/main/java/org/jrimum/texgit/Record.java @@ -30,8 +30,6 @@ import java.util.List; -import org.jrimum.utilix.text.TextStream; - /** * @author Gilmar P.S.L. * diff --git a/src/main/java/org/jrimum/texgit/TextListStream.java b/src/main/java/org/jrimum/texgit/TextListStream.java index 05275d7..24cb50e 100644 --- a/src/main/java/org/jrimum/texgit/TextListStream.java +++ b/src/main/java/org/jrimum/texgit/TextListStream.java @@ -30,8 +30,6 @@ import java.util.List; -import org.jrimum.utilix.ReadWriteStream; - /** * @author Gilmar P.S.L. * diff --git a/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java b/src/main/java/org/jrimum/texgit/TextStream.java similarity index 57% rename from src/main/java/org/jrimum/texgit/type/component/CommonFiller.java rename to src/main/java/org/jrimum/texgit/TextStream.java index 01c17f1..a37cced 100644 --- a/src/main/java/org/jrimum/texgit/type/component/CommonFiller.java +++ b/src/main/java/org/jrimum/texgit/TextStream.java @@ -9,7 +9,7 @@ * OF ANY KIND, either express or implied. See the License for the specific * language governing permissions and limitations under the License. * - * Created at: 26/07/2008 - 12:44:41 + * Created at: 30/03/2008 - 18:17:20 * * ================================================================================ * @@ -23,48 +23,26 @@ * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a * reger permissões e limitações sob esta LICENÇA. * - * Criado em: 26/07/2008 - 12:44:41 + * Criado em: 30/03/2008 - 18:17:20 * */ -package org.jrimum.texgit.type.component; -import org.jrimum.utilix.text.Strings; +package org.jrimum.texgit; /** - * @author Gilmar P.S.L. - * + *

Interface usada para objetos com serviços de leitura e escrita de textos.

+ * + * @author Gilmar P.S.L + * @author Misael Barreto + * @author Rômulo Augusto + * @author Nordeste Fomento + * Mercantil + * + * @since 0.2 + * + * @version 0.2 */ -public enum CommonFiller { - - /** - * Filler padrão para preenchimento com zeros a esquerda. - */ - ZERO_LEFT(new Filler(0, Side.LEFT)), - - /** - * Filler padrão para preenchimento com zeros a direita. - */ - ZERO_RIGHT(new Filler(0, Side.RIGHT)), - - /** - * Filler padrão para preenchimento com espaços em branco a esquerda. - */ - WHITE_SPACE_LEFT(new Filler(Strings.WHITE_SPACE, Side.LEFT)), - - /** - * Filler padrão para preenchimento com espaços em branco a direita. - */ - WHITE_SPACE_RIGHT(new Filler(Strings.WHITE_SPACE, Side.RIGHT)); - - private Filler instanceEnumFiller; - - CommonFiller(Filler filler){ - - this.instanceEnumFiller = filler; - } +public interface TextStream extends ReadWriteStream { - public Filler getOne(){ - return this.instanceEnumFiller; - } } diff --git a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java index 3b5949c..6e94526 100644 --- a/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java +++ b/src/main/java/org/jrimum/texgit/engine/FixedFieldBuilder.java @@ -45,8 +45,8 @@ import org.jrimum.texgit.language.EnumFormats; import org.jrimum.texgit.language.EnumFormatsTypes; import org.jrimum.texgit.language.MetaField; -import org.jrimum.texgit.type.component.CommonFiller; -import org.jrimum.texgit.type.component.Filler; +import org.jrimum.texgit.type.Filler; +import org.jrimum.texgit.type.component.Fillers; import org.jrimum.texgit.type.component.FixedField; import org.jrimum.texgit.type.component.Side; import org.jrimum.utilix.Dates; @@ -171,21 +171,20 @@ private static FixedField getInstance(MetaField metaField) return fField; } - private static Filler getFiller(MetaField metaField) { + private static Filler getFiller(MetaField metaField) { - Filler filler = null; + Filler filler = null; if (isNotNull(metaField.getFiller())) { - Filler filr = new Filler(); + org.jrimum.texgit.type.component.Filler filr = new org.jrimum.texgit.type.component.Filler(); filr.setPadding(metaField.getFiller().getPadding()); filr.setSideToFill(Side.valueOf(metaField.getFiller() .getSideToFill().name())); filler = filr; } else { - filler = CommonFiller.valueOf(metaField.getPadding().name()) - .getOne(); + filler = Fillers.valueOf(metaField.getPadding().name()); } return filler; @@ -253,7 +252,7 @@ private static String buildFormat(EnumFormats format, EnumFormatsTypes type) { int lengthToFill = BASE_DECIMAL_FORMAT.length() + countMatches(defFormat, "D"); - strFormat = CommonFiller.ZERO_RIGHT.getOne().fill( + strFormat = Fillers.ZERO_RIGHT.fill( BASE_DECIMAL_FORMAT, lengthToFill); break; diff --git a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index 4e8801d..c928486 100644 --- a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -37,9 +37,9 @@ import java.util.ListIterator; import org.apache.commons.lang.StringUtils; +import org.jrimum.texgit.TextStream; import org.jrimum.utilix.Collections; import org.jrimum.utilix.Objects; -import org.jrimum.utilix.text.TextStream; /** * @author Gilmar P.S.L. diff --git a/src/main/java/org/jrimum/texgit/type/Field.java b/src/main/java/org/jrimum/texgit/type/Field.java index 8c99b34..d9a3902 100644 --- a/src/main/java/org/jrimum/texgit/type/Field.java +++ b/src/main/java/org/jrimum/texgit/type/Field.java @@ -30,7 +30,7 @@ import java.text.Format; -import org.jrimum.utilix.text.TextStream; +import org.jrimum.texgit.TextStream; /** * @author Gilmar P.S.L. diff --git a/src/main/java/org/jrimum/texgit/type/Filler.java b/src/main/java/org/jrimum/texgit/type/Filler.java new file mode 100644 index 0000000..8c9e8af --- /dev/null +++ b/src/main/java/org/jrimum/texgit/type/Filler.java @@ -0,0 +1,164 @@ +package org.jrimum.texgit.type; + +import java.io.Serializable; + +import org.jrimum.texgit.TextStream; + +public interface Filler extends Serializable{ + + /** + * Preenche o campo com o caracter especificado e no lado especificado. + * + *

+ * Exemplo: + *
+ * Se sideToFill == SideToFill.LEFT, o caracter especificado será adicionado à String + * no lado esquerdo até que o campo fique com o tamanho que foi definido. + *

+ * + * @param toFill + * @param length + * @return + * + * @since 0.2 + */ + String fill(String toFill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como String.valueOf(toFill). + * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since 0.2 + */ + String fill(long tofill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como String.valueOf(toFill). + * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since 0.2 + */ + String fill(int tofill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como String.valueOf(toFill). + * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since 0.2 + */ + String fill(short tofill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como String.valueOf(toFill). + * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since 0.2 + */ + String fill(byte tofill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como String.valueOf(toFill). + * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since 0.2 + */ + String fill(char tofill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como String.valueOf(toFill). + * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since 0.2 + */ + String fill(double tofill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como String.valueOf(toFill). + * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since + */ + String fill(float tofill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como toFill.toString(). + *
+ + *

+ * Caso toFill seja null, o método + * fill(String, int) receberá uma String nula como parâmetro. + *

+ * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since 0.2 + */ + String fill(Object tofill, int length); + + /** + * Executa o método fill(String, int) passando o parâmetro + * toFill como toFill.write(). + *
+ + *

+ * Caso toFill seja null, o método + * fill(String, int) receberá uma String nula como parâmetro. + *

+ * + * @param tofill + * @param length + * @return + * + * @see Filler#fill(String, int) + * + * @since 0.2 + */ + String fill(TextStream tofill, int length); +} \ No newline at end of file diff --git a/src/main/java/org/jrimum/texgit/type/FixedField.java b/src/main/java/org/jrimum/texgit/type/FixedField.java index a073196..e1073cc 100644 --- a/src/main/java/org/jrimum/texgit/type/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/FixedField.java @@ -28,8 +28,6 @@ */ package org.jrimum.texgit.type; -import org.jrimum.texgit.type.component.Filler; - /** * @author Gilmar P.S.L. @@ -41,10 +39,10 @@ public interface FixedField extends Field, FixedLength{ /** * @return the filler */ - public abstract Filler getFiller(); + public abstract Filler getFiller(); /** * @param filler the filler to set */ - public abstract void setFiller(Filler filler); + public abstract void setFiller(Filler filler); } \ No newline at end of file diff --git a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java index ffb872a..b54572e 100644 --- a/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/component/BlockOfFields.java @@ -192,7 +192,7 @@ public Integer getFixedLength() { /** * @param length the length to set */ - private void setLength(Integer length) { + protected void setLength(Integer length) { if (isNotNull(length)) this.length = length; @@ -210,7 +210,7 @@ public Integer getFixedSize() { /** * @param size the size to set */ - private void setSize(Integer size) { + protected void setSize(Integer size) { if (isNotNull(size)) this.size = size; diff --git a/src/main/java/org/jrimum/texgit/type/component/Field.java b/src/main/java/org/jrimum/texgit/type/component/Field.java index 85115d6..bae9ab5 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Field.java +++ b/src/main/java/org/jrimum/texgit/type/component/Field.java @@ -41,9 +41,9 @@ import java.text.ParseException; import java.util.Date; +import org.jrimum.texgit.TextStream; import org.jrimum.utilix.Dates; import org.jrimum.utilix.Objects; -import org.jrimum.utilix.text.TextStream; /** * @author Gilmar P.S.L. @@ -89,15 +89,13 @@ public Field() { } /** - * @param name * @param value */ - public Field(String name, G value) { + public Field(G value) { super(); - setName(name); setValue(value); } - + /** *

* Cria um Field com um valor e um formatador para o valor. Isto significa que a leitura e escrita do valor informado @@ -112,6 +110,17 @@ public Field(G value, Format formatter){ setValue(value); setFormatter(formatter); } + + /** + * @param name + * @param value + */ + public Field(String name, G value) { + super(); + setName(name); + setValue(value); + } + /** *

diff --git a/src/main/java/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java index 90a03ba..10c83ae 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -32,11 +32,9 @@ import static org.apache.commons.lang.StringUtils.EMPTY; import static org.jrimum.utilix.Objects.isNotNull; -import java.io.Serializable; - import org.apache.commons.lang.StringUtils; +import org.jrimum.texgit.TextStream; import org.jrimum.utilix.Objects; -import org.jrimum.utilix.text.TextStream; /** *

@@ -69,8 +67,8 @@ * */ @SuppressWarnings("serial") -public class Filler implements Serializable{ - +public class Filler implements org.jrimum.texgit.type.Filler{ + private G padding; private Side sideToFill; @@ -98,55 +96,46 @@ public Filler(G fillWith, Side sideToFill) { setSideToFill(sideToFill); } + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#getPadding() + */ public G getPadding() { return padding; } - /** - * @param filler + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#setPadding(G) */ public void setPadding(G fillWith) { - if(isNotNull(fillWith)) + if(isNotNull(fillWith)){ this.padding = fillWith; - - else + }else{ throw new IllegalArgumentException(format("Preenchimento inválido [%s]!",fillWith)); + } } - /** - * @return + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#getSideToFill() */ public Side getSideToFill() { return sideToFill; } - /** - * @param sideToFill + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#setSideToFill(org.jrimum.texgit.type.component.Side) */ public void setSideToFill(Side sideToFill) { - if(isNotNull(sideToFill)) + if(isNotNull(sideToFill)){ this.sideToFill = sideToFill; - - else + }else{ throw new IllegalArgumentException(format("Lado para preenchimento [%s]!",sideToFill)); + } } - /** - *

- * Preenche o campo com o caracter especificado e no lado especificado. - *

- *

- * Exemplo: - *
- * Se sideToFill == SideToFill.LEFT, o caracter especificado será adicionado à String - * no lado esquerdo até que o campo fique com o tamanho que foi definido. - *

- * - * @param toFill - * @param length - * @return + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(java.lang.String, int) */ public String fill(String toFill, int length){ @@ -166,195 +155,79 @@ public String fill(String toFill, int length){ return str; } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como String.valueOf(toFill). - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(long, int) */ public String fill(long tofill, int length){ return fill(String.valueOf(tofill), length); } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como String.valueOf(toFill). - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(int, int) */ public String fill(int tofill, int length){ return fill(String.valueOf(tofill), length); } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como String.valueOf(toFill). - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(short, int) */ public String fill(short tofill, int length){ return fill(String.valueOf(tofill), length); } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como String.valueOf(toFill). - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(byte, int) */ public String fill(byte tofill, int length){ return fill(String.valueOf(tofill), length); } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como String.valueOf(toFill). - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(char, int) */ public String fill(char tofill, int length){ return fill(String.valueOf(tofill), length); } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como String.valueOf(toFill). - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(double, int) */ public String fill(double tofill, int length){ return fill(String.valueOf(tofill), length); } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como String.valueOf(toFill). - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(float, int) */ public String fill(float tofill, int length){ return fill(String.valueOf(tofill), length); } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como toFill.toString(). - *
- *

- *

- * Caso toFill seja null, o método - * fill(String, int) receberá uma String nula como parâmetro. - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(java.lang.Object, int) */ public String fill(Object tofill, int length){ String toFillTemp = null; - if(isNotNull(tofill)) + if(isNotNull(tofill)){ toFillTemp = tofill.toString(); + } return fill(toFillTemp, length); } - /** - * - *

- * Executa o método fill(String, int) passando o parâmetro - * toFill como toFill.write(). - *
- *

- *

- * Caso toFill seja null, o método - * fill(String, int) receberá uma String nula como parâmetro. - *

- * - * @param tofill - * @param length - * @return - * - * @see Filler#fill(String, int) - * - * @since + /* (non-Javadoc) + * @see org.jrimum.texgit.type.component.X#fill(org.jrimum.texgit.TextStream, int) */ public String fill(TextStream tofill, int length){ String toFillTemp = null; - if(isNotNull(tofill)) + if(isNotNull(tofill)){ toFillTemp = tofill.write(); + } return fill(toFillTemp, length); } diff --git a/src/main/java/org/jrimum/texgit/type/component/Fillers.java b/src/main/java/org/jrimum/texgit/type/component/Fillers.java new file mode 100644 index 0000000..db04438 --- /dev/null +++ b/src/main/java/org/jrimum/texgit/type/component/Fillers.java @@ -0,0 +1,167 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 26/07/2008 - 12:44:41 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 26/07/2008 - 12:44:41 + * + */ +package org.jrimum.texgit.type.component; + +import org.jrimum.texgit.TextStream; +import org.jrimum.utilix.text.Strings; + + +/** + * @author Gilmar P.S.L. + * + */ +public enum Fillers implements org.jrimum.texgit.type.Filler{ + + /** + * Filler padrão para preenchimento com zeros a esquerda. + */ + ZERO_LEFT(new Filler(0, Side.LEFT)), + + /** + * Filler padrão para preenchimento com zeros a direita. + */ + ZERO_RIGHT(new Filler(0, Side.RIGHT)), + + /** + * Filler padrão para preenchimento com espaços em branco a esquerda. + */ + WHITE_SPACE_LEFT(new Filler(Strings.WHITE_SPACE, Side.LEFT)), + + /** + * Filler padrão para preenchimento com espaços em branco a direita. + */ + WHITE_SPACE_RIGHT(new Filler(Strings.WHITE_SPACE, Side.RIGHT)); + + private Filler filler; + + private Fillers(Filler filler){ + this.filler = filler; + } + + /** + * @param toFill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(java.lang.String, int) + */ + public String fill(String toFill, int length) { + return filler.fill(toFill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(long, int) + */ + public String fill(long tofill, int length) { + return filler.fill(tofill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(int, int) + */ + public String fill(int tofill, int length) { + return filler.fill(tofill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(short, int) + */ + public String fill(short tofill, int length) { + return filler.fill(tofill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(byte, int) + */ + public String fill(byte tofill, int length) { + return filler.fill(tofill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(char, int) + */ + public String fill(char tofill, int length) { + return filler.fill(tofill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(double, int) + */ + public String fill(double tofill, int length) { + return filler.fill(tofill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(float, int) + */ + public String fill(float tofill, int length) { + return filler.fill(tofill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(java.lang.Object, int) + */ + public String fill(Object tofill, int length) { + return filler.fill(tofill, length); + } + + /** + * @param tofill + * @param length + * @return + * @see org.jrimum.texgit.type.component.Filler#fill(org.jrimum.texgit.TextStream, int) + */ + public String fill(TextStream tofill, int length) { + return filler.fill(tofill, length); + } + +} diff --git a/src/main/java/org/jrimum/texgit/type/component/FixedField.java b/src/main/java/org/jrimum/texgit/type/component/FixedField.java index b3c3121..9adcd7f 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FixedField.java +++ b/src/main/java/org/jrimum/texgit/type/component/FixedField.java @@ -34,11 +34,10 @@ import java.text.Format; +import org.jrimum.texgit.type.Filler; import org.jrimum.utilix.Objects; - - /** * @author Gilmar P.S.L. * @@ -59,7 +58,7 @@ public class FixedField extends Field implements org.jrimum.texgit.type.Fi * Preenchedor do valor utilizado na hora da escrita. *

*/ - private Filler filler; + private Filler filler; /** @@ -84,34 +83,45 @@ public FixedField() { super(); } - /** - * @param ordem - * @param length - * @param filler - */ - public FixedField(String name, G value, Integer length, Filler filler) { - super(name,value); + public FixedField(G value, Integer length) { + super(value); + setFixedLength(length); + } + + public FixedField(G value, Integer length, Filler filler) { + super(value); setFixedLength(length); setFiller(filler); } - - /** - * @param ordem - * @param length - * @param filler - */ - public FixedField(G value, Format formatter, Integer length, Filler filler) { + + public FixedField(G value, Integer length, Format formatter) { + super(value,formatter); + setFixedLength(length); + } + + public FixedField(G value, Integer length, Format formatter, Filler filler) { super(value,formatter); setFixedLength(length); setFiller(filler); } - /** - * @param ordem - * @param length - * @param filler - */ - public FixedField(String name, G value, Format formatter, Integer length, Filler filler) { + public FixedField(String name, G value, Integer length) { + super(name,value); + setFixedLength(length); + } + + public FixedField(String name, G value, Integer length, Filler filler) { + super(name,value); + setFixedLength(length); + setFiller(filler); + } + + public FixedField(String name, G value, Integer length, Format formatter) { + super(name,value,formatter); + setFixedLength(length); + } + + public FixedField(String name, G value, Integer length, Format formatter, Filler filler) { super(name,value,formatter); setFixedLength(length); setFiller(filler); @@ -180,18 +190,18 @@ public Integer getFixedLength() { public void setFixedLength(Integer length) { - if (isNotNull(length)) + if (isNotNull(length) && length.intValue() > 0) this.length = length; else throw new IllegalArgumentException(format("Comprimento inválido [%s]!",length)); } - public Filler getFiller() { + public Filler getFiller() { return filler; } - public void setFiller(Filler filler) { + public void setFiller(Filler filler) { if(isNotNull(filler)) this.filler = filler; diff --git a/src/test/java/org/jrimum/texgit/type/component/TestFiller.java b/src/test/java/org/jrimum/texgit/type/component/TestFiller.java new file mode 100644 index 0000000..a9006d0 --- /dev/null +++ b/src/test/java/org/jrimum/texgit/type/component/TestFiller.java @@ -0,0 +1,257 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 30/03/2008 - 18:15:42 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 30/03/2008 - 18:15:42 + * + */ + +package org.jrimum.texgit.type.component; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.jrimum.texgit.TextStream; +import org.jrimum.texgit.type.component.Filler; +import org.jrimum.utilix.text.Strings; +import org.junit.Before; +import org.junit.Test; + +/** + *

+ * Teste unitário para a classe Filler. + *

+ * + * @author Gilmar P.S.L. + * @author Rômulo Augusto + * + * @since 0.2 + * + * @version 0.2 + */ +public class TestFiller { + + private static final String CAMPO = "TESTE"; + + private static final int TAMANHO = 10; + + private Filler fillerString; + private Filler fillerInteger; + private Filler fillerDouble; + private Filler fillerSide; + private Filler whiteSpaceLeft; + private Filler zeroLeft ; + private Filler zeroRight; + + @Before + public void setup(){ + whiteSpaceLeft = new Filler(Strings.WHITE_SPACE, Side.LEFT); + zeroLeft = new Filler(0, Side.LEFT); + zeroRight = new Filler(0, Side.RIGHT); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetSideNullValue() { + + whiteSpaceLeft.setSideToFill(null); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetToFillNullValue() { + + whiteSpaceLeft.setPadding(null); + } + + @Test + public void testSetToFill() { + + whiteSpaceLeft.setPadding(CAMPO); + + assertTrue(whiteSpaceLeft.getPadding() instanceof String); + assertEquals(whiteSpaceLeft.getPadding(), CAMPO); + } + + @Test + public void testSetSide() { + + whiteSpaceLeft.setSideToFill(Side.RIGHT); + + assertEquals(whiteSpaceLeft.getSideToFill(), Side.RIGHT); + } + + @Test(expected = IllegalArgumentException.class) + public void testFiller() { + + new Filler(null, null); + new Filler("", null); + new Filler(null, Side.LEFT); + } + + @Test + public void testFillString() { + + assertEquals(CAMPO + "00000", zeroRight.fill(CAMPO, TAMANHO)); + assertEquals("00000" + CAMPO, zeroLeft.fill(CAMPO, TAMANHO)); + } + + @Test + public void testFillLong() { + + assertEquals(1L + "000000000", zeroRight.fill(1L, TAMANHO)); + assertEquals("000000000" + 1L, zeroLeft.fill(1L, TAMANHO)); + } + + @Test + public void testFillInt() { + + assertEquals(1 + "000000000", zeroRight.fill(1, TAMANHO)); + assertEquals("000000000" + 1, zeroLeft.fill(1, TAMANHO)); + } + + @Test + public void testFillShort() { + + assertEquals((short) 1 + "000000000", zeroRight.fill((short) 1, + TAMANHO)); + assertEquals("000000000" + (short) 1, zeroLeft.fill((short) 1, + TAMANHO)); + } + + @Test + public void testFillByte() { + + assertEquals((byte) 1 + "000000000", zeroRight.fill((byte) 1, + TAMANHO)); + assertEquals("000000000" + (byte) 1, zeroLeft.fill((byte) 1, + TAMANHO)); + } + + @Test + public void testFillChar() { + + assertEquals('1' + "000000000", zeroRight.fill('1', TAMANHO)); + assertEquals("000000000" + '1', zeroLeft.fill('1', TAMANHO)); + } + + @Test + public void testFillDouble() { + + assertEquals(1.0 + "0000000", zeroRight.fill(1.0, TAMANHO)); + assertEquals("0000000" + 1.0, zeroLeft.fill(1.0, TAMANHO)); + } + + @Test + public void testFillFloat() { + + assertEquals(1.0f + "0000000", zeroRight.fill(1.0f, TAMANHO)); + assertEquals("0000000" + 1.0f, zeroLeft.fill(1.0f, TAMANHO)); + } + + @Test + public void testFillObject() { + + Object object = new Object() { + + @Override + public String toString() { + return CAMPO; + } + }; + + assertEquals(object + "00000", zeroRight.fill(object, TAMANHO)); + assertEquals("00000" + object, zeroLeft.fill(object, TAMANHO)); + } + + @Test + public void testFillITextStream() { + + TextStream textStream = new TextStream() { + + private static final long serialVersionUID = 1L; + + public void read(String g) { + } + + public String write() { + + return CAMPO; + } + }; + + assertEquals(textStream.write() + "00000", zeroRight.fill( + textStream, TAMANHO)); + assertEquals("00000" + textStream.write(), zeroLeft.fill( + textStream, TAMANHO)); + } + + @Test + public void testFill() { + + fillerString = new Filler("ABC", Side.LEFT); + assertTrue(fillerString.getPadding() instanceof String); + assertEquals("ABCAB" + CAMPO, fillerString.fill(CAMPO, TAMANHO)); + assertEquals(CAMPO, fillerString.fill(CAMPO, 0)); + assertEquals(CAMPO, fillerString.fill(CAMPO, -TAMANHO)); + + fillerString.setSideToFill(Side.RIGHT); + assertEquals(CAMPO + "ABCAB", fillerString.fill(CAMPO, TAMANHO)); + assertEquals(CAMPO, fillerString.fill(CAMPO, 0)); + assertEquals(CAMPO, fillerString.fill(CAMPO, -TAMANHO)); + + fillerInteger = new Filler(new Integer(TAMANHO), + Side.LEFT); + assertTrue(fillerInteger.getPadding() instanceof Integer); + assertEquals("10101" + CAMPO, fillerInteger.fill(CAMPO, TAMANHO)); + assertEquals(CAMPO, fillerInteger.fill(CAMPO, 0)); + assertEquals(CAMPO, fillerInteger.fill(CAMPO, -TAMANHO)); + + fillerInteger.setSideToFill(Side.RIGHT); + assertEquals(CAMPO + "10101", fillerInteger.fill(CAMPO, TAMANHO)); + assertEquals(CAMPO, fillerInteger.fill(CAMPO, 0)); + assertEquals(CAMPO, fillerInteger.fill(CAMPO, -TAMANHO)); + + fillerDouble = new Filler(new Double(10.9), Side.LEFT); + assertTrue(fillerDouble.getPadding() instanceof Double); + assertEquals("10.91" + CAMPO, fillerDouble.fill(CAMPO, TAMANHO)); + assertEquals(CAMPO, fillerDouble.fill(CAMPO, 0)); + assertEquals(CAMPO, fillerDouble.fill(CAMPO, -TAMANHO)); + + fillerDouble.setSideToFill(Side.RIGHT); + assertEquals(CAMPO + "10.91", fillerDouble.fill(CAMPO, TAMANHO)); + assertEquals(CAMPO, fillerDouble.fill(CAMPO, 0)); + assertEquals(CAMPO, fillerDouble.fill(CAMPO, -TAMANHO)); + + fillerSide = new Filler(Side.LEFT, Side.LEFT); + assertTrue(fillerSide.getPadding() instanceof Side); + assertEquals("LEFTL" + CAMPO, fillerSide.fill(CAMPO, TAMANHO)); + assertEquals(CAMPO, fillerSide.fill(CAMPO, 0)); + assertEquals(CAMPO, fillerSide.fill(CAMPO, -TAMANHO)); + + fillerSide.setSideToFill(Side.RIGHT); + assertEquals(CAMPO + "LEFTL", fillerSide.fill(CAMPO, TAMANHO)); + assertEquals(CAMPO, fillerSide.fill(CAMPO, 0)); + assertEquals(CAMPO, fillerSide.fill(CAMPO, -TAMANHO)); + } + +} diff --git a/src/test/java/org/jrimum/texgit/type/component/TestFixedField.java b/src/test/java/org/jrimum/texgit/type/component/TestFixedField.java new file mode 100644 index 0000000..fc24b3b --- /dev/null +++ b/src/test/java/org/jrimum/texgit/type/component/TestFixedField.java @@ -0,0 +1,228 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 30/03/2008 - 18:15:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 30/03/2008 - 18:15:56 + * + */ + +package org.jrimum.texgit.type.component; + +import static org.jrimum.utilix.text.DateFormat.DDMMYYYY_B; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.math.BigDecimal; +import java.text.DateFormat; +import java.text.Format; +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.apache.commons.lang.StringUtils; +import org.jrimum.utilix.Dates; +import org.jrimum.utilix.text.DecimalFormat; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + *

+ * Teste unitário para a classe utilitária de coleções. + *

+ * + * @author Gilmar P.S.L. + * @author Rômulo Augusto + * + * @since 0.2 + * + * @version 0.2 + */ +public class TestFixedField { + + private static final DateFormat FORMAT_DDMMYY = new SimpleDateFormat("ddMMyy"); + + private FixedField campoString; + + private FixedField campoInteger; + + private FixedField campoLong; + + private FixedField campoDate; + + private FixedField campoDecimal; + + private FixedField campoDecimal_v9; + + @Before + public void setUp() { + + campoString = new FixedField(StringUtils.EMPTY, 8, Fillers.WHITE_SPACE_RIGHT); + + campoDate = new FixedField(DDMMYYYY_B.parse("22/07/2007"), 6, FORMAT_DDMMYY); + + campoInteger = new FixedField(0, 6, Fillers.ZERO_LEFT); + + campoLong = new FixedField(0L, 6, Fillers.ZERO_LEFT); + + campoDecimal = new FixedField(new BigDecimal("875.98"), 11, DecimalFormat.NUMBER_DD_BR.copy(), Fillers.ZERO_LEFT); + + campoDecimal_v9 = new FixedField(new BigDecimal("875.9"), 10, DecimalFormat.NUMBER_D_BR.copy(), Fillers.ZERO_LEFT); + } + + @After + public void tearDown() { + + campoString = null; + campoDate = null; + campoInteger = null; + campoLong = null; + campoDecimal = null; + campoDecimal_v9 = null; + } + + @Test(expected = IllegalArgumentException.class) + public void testCampo() { + + Format format = null; + + campoDate = new FixedField(new Date(), 0, FORMAT_DDMMYY); + campoDate = new FixedField(null, 1, FORMAT_DDMMYY); + campoDate = new FixedField(new Date(), 0, format); + } + + @Test + public void testLer() { + + campoString.read("COBRANCA"); + assertNotNull(campoString.getValue()); + assertTrue(campoString.getValue() instanceof String); + assertEquals("COBRANCA", campoString.getValue().toString()); + + campoDate.read("011002"); + assertNotNull(campoDate.getValue()); + assertTrue(campoDate.getValue() instanceof Date); + assertEquals("011002", FORMAT_DDMMYY.format(campoDate + .getValue())); + + campoInteger.read("000001"); + assertNotNull(campoInteger.getValue()); + assertTrue(campoInteger.getValue() instanceof Integer); + assertTrue(new Integer(1).compareTo(campoInteger.getValue()) == 0); + + campoLong.read("000001"); + assertNotNull(campoLong.getValue()); + assertTrue(campoLong.getValue() instanceof Long); + assertTrue(new Long(1L).compareTo(campoLong.getValue()) == 0); + + campoDecimal.read("00000087598"); + assertNotNull(campoDecimal.getValue()); + assertTrue(campoDecimal.getValue() instanceof BigDecimal); + assertTrue(new BigDecimal("875.98").compareTo(campoDecimal.getValue()) == 0); + + campoDecimal_v9.read("0000008759"); + assertNotNull(campoDecimal_v9.getValue()); + assertTrue(campoDecimal_v9.getValue() instanceof BigDecimal); + assertTrue(new BigDecimal("875.9").compareTo(campoDecimal_v9 + .getValue()) == 0); + } + + @Test(expected = IllegalArgumentException.class) + public void testLerException() { + + campoString.read(null); + campoDate.read(null); + campoDate.read(""); + campoDate.read("abcd"); + campoDate.read("1a2MA1205"); + } + + @Test + public void testEscrever() { + + assertNotNull(campoString.write()); + assertEquals(" ", campoString.write()); + assertEquals(8, campoString.write().length()); + + assertNotNull(campoDate.write()); + assertEquals("220707", campoDate.write()); + assertEquals(6, campoDate.write().length()); + + campoDate.setValue(Dates.invalidDate()); + campoDate.setFiller(Fillers.ZERO_LEFT); + assertNotNull(campoDate.write()); + assertEquals("000000", campoDate.write()); + assertEquals(6, campoDate.write().length()); + + assertNotNull(campoInteger.write()); + assertEquals("000000", campoInteger.write()); + assertEquals(6, campoInteger.write().length()); + + assertNotNull(campoLong.write()); + assertEquals("000000", campoLong.write()); + assertEquals(6, campoLong.write().length()); + + assertNotNull(campoDecimal.write()); + assertEquals("00000087598", campoDecimal.write()); + assertEquals(11, campoDecimal.write().length()); + + assertNotNull(campoDecimal_v9.write()); + assertEquals("0000008759", campoDecimal_v9.write()); + assertEquals(10, campoDecimal_v9.write().length()); + } + + @Test(expected = IllegalStateException.class) + public void testEscreverException() { + + FixedField campo = new FixedField("tamanho", 5); + assertEquals(5, campo.write().length()); + + FixedField campo1 = new FixedField(1234, 3); + assertEquals(3, campo1.write().length()); + + FixedField campo2 = new FixedField(12, 3); + assertEquals(3, campo2.write().length()); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetCampo() { + campoInteger.setValue(null); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetTamanhoZero() { + campoString.setFixedLength(0); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetTamanhoNegativo() { + campoString.setFixedLength(-1); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetFiller() { + campoString.setFiller(null); + } + +} diff --git a/src/test/java/org/jrimum/utilix/excludes/TestUtil.java b/src/test/java/org/jrimum/utilix/excludes/TestUtil.java new file mode 100644 index 0000000..141502d --- /dev/null +++ b/src/test/java/org/jrimum/utilix/excludes/TestUtil.java @@ -0,0 +1,80 @@ +/* + * Copyright 2008 JRimum Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * Created at: 30/03/2008 - 18:15:56 + * + * ================================================================================ + * + * Direitos autorais 2008 JRimum Project + * + * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar + * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma + * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que + * haja exigência legal ou acordo por escrito, a distribuição de software sob + * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER + * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a + * reger permissões e limitações sob esta LICENÇA. + * + * Criado em: 30/03/2008 - 18:15:56 + * + */ +package org.jrimum.utilix.excludes; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.Date; + +import org.jrimum.texgit.type.FixedField; +import org.jrimum.texgit.type.component.Field; + +/** + *

+ * Classe para uso em testes com Fields. + *

+ * + * @author Gilmar P.S.L. + * + * @since 0.2 + * + * @version 0.2 + */ +public class TestUtil { + + public static void testEscritaCampo(FixedField campo, Class tipo, + G valorDeEntrada, String strEsperada, int tamanho) { + + // >>> + assertNotNull(campo); + assertTrue(tipo.isInstance(campo.getValue())); + assertEquals(valorDeEntrada, campo.getValue()); + assertNotNull(campo.write()); + assertEquals(strEsperada, campo.write()); + assertTrue(tamanho == campo.getFixedLength()); + assertTrue(tamanho == campo.write().length()); + } + + public static void testLeituraCampo(Field campo, Class tipo, + G valorEsperado, String strDeEntrada) { + + // <<< + campo.read(strDeEntrada); + assertTrue(tipo.isInstance(campo.getValue())); + + if (campo.getValue() instanceof Date)// compareNoFormatoEscrito + assertEquals(campo.getFormatter().format(valorEsperado), campo.write()); + else + assertEquals(valorEsperado, campo.getValue()); + + } + +} From 9d2d606bd9433d6e69fa990c64ccafa7832e1c59 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Sat, 26 Oct 2013 23:00:24 -0200 Subject: [PATCH 64/87] =?UTF-8?q?Omitindo=20montagem=20de=20exemplos=20por?= =?UTF-8?q?=20n=C3=A3o=20existir=20no=20momento.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9430a68..e21fe5b 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ src/main/assembly/jrimum-texgit-with-dependencies.xml - src/main/assembly/jrimum-texgit-examples.xml + From e78c5c2116f92dbd2fdd51fa330b7291c68daefd Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Fri, 1 Nov 2013 19:32:45 -0200 Subject: [PATCH 65/87] Update README.md Link para status no CI. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 0654a34..fd183fc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ Texgit ====== +[![Build Status](https://ci-jrimum.rhcloud.com/buildStatus/icon?job=Texgit)](https://ci-jrimum.rhcloud.com) + O projeto Texgit é um componente e framework em Java que facilita a manipulação de arquivos Flat Files (arquivo-texto) através de objetos. Diversas empresas já usam o Texgit em produção e estão colaborando no Design do componente e da API. From 4c73cc71f4f768d5368d25501e1fc857c1d8fa40 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Sun, 3 Nov 2013 17:35:02 -0200 Subject: [PATCH 66/87] =?UTF-8?q?OPEN=20-=20#3:=20Servidor=20de=20integra?= =?UTF-8?q?=C3=A7=C3=A3o=20cont=C3=ADnua=20para=20o=20projeto=20http://git?= =?UTF-8?q?hub.com/jrimum/projeto/issues/issue/3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Atualizando o plugins maven, configuração e libs. --- pom.xml | 67 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index e21fe5b..7609c87 100644 --- a/pom.xml +++ b/pom.xml @@ -49,28 +49,25 @@ UTF-8 UTF-8 - jrimum-${project.artifactId}-${project.version} - ${project.build.finalName} org.apache.maven.plugins maven-compiler-plugin - 2.3.1 + 3.1 1.5 1.5 - maven-assembly-plugin + 2.4 src/main/assembly/jrimum-texgit-with-dependencies.xml - @@ -83,13 +80,12 @@ - org.apache.maven.plugins maven-surefire-plugin - 2.5 + 2.16 - true + false org/jrimum/texgit/**/* @@ -99,14 +95,10 @@ - org.apache.maven.plugins maven-source-plugin - 2.1.2 - - ${project.build.finalName} - + 2.2.1 attach-sources @@ -117,14 +109,10 @@ - org.apache.maven.plugins maven-javadoc-plugin - 2.7 - - ${project.build.finalName} - + 2.9.1 attach-javadoc @@ -134,18 +122,28 @@ + + UTF-8 + UTF-8 + true + private + 1.5 + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.1 - - + org.jrimum jrimum-utilix - 0.2.3-SNAPSHOT + 0.2.3-DEV-SNAPSHOT - sun-jaxb jaxb-api @@ -156,27 +154,34 @@ jaxb-impl 2.2 - + junit junit - 4.8.2 + 4.11 test - - - - org.jrimum.snapshots - http://jrimum.org/maven/content/repositories/org.jrimum.snapshots/ - - JBoss Repository http://repository.jboss.org/nexus/content/groups/public-jboss/ + + jrimum.org + http://jrimum.org/maven/content/groups/public/ + + true + + + + + org.jrimum.snapshots + http://jrimum.org/maven/content/repositories/org.jrimum.snapshots/ + + +
\ No newline at end of file From 3574aa2363a551b34be2fca728310b11a2fcb398 Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Thu, 7 Nov 2013 20:26:37 -0200 Subject: [PATCH 67/87] =?UTF-8?q?OPEN=20-=20#3:=20Servidor=20de=20integra?= =?UTF-8?q?=C3=A7=C3=A3o=20cont=C3=ADnua=20para=20o=20projeto=20http://git?= =?UTF-8?q?hub.com/jrimum/projeto/issues/issue/3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Removendo javadoc warnings --- .../texgit/type/AbstractStringOfFields.java | 6 +- .../java/org/jrimum/texgit/type/Filler.java | 26 ++++---- .../java/org/jrimum/texgit/type/Fixed.java | 15 ++--- .../jrimum/texgit/type/component/Filler.java | 64 +++++++++---------- .../jrimum/texgit/type/component/Fillers.java | 20 +++--- 5 files changed, 63 insertions(+), 68 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java index c928486..c25e88d 100644 --- a/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java +++ b/src/main/java/org/jrimum/texgit/type/AbstractStringOfFields.java @@ -102,7 +102,7 @@ protected AbstractStringOfFields clone() throws CloneNotSupportedException { * cada subclasse. *

* - * @see org.jrimum.utilix.IReadWriteStream#read(java.lang.Object) + * @see org.jrimum.texgit.ReadWriteStream#read(Object) */ public abstract void read(String lineOfField); @@ -111,7 +111,7 @@ protected AbstractStringOfFields clone() throws CloneNotSupportedException { * Escreve os campos na ordem em que estão dispostos na lista em uma única linha (string). *

* - * @see org.jrimum.utilix.IReadWriteStream#write() + * @see org.jrimum.texgit.ReadWriteStream#write() */ public String write() { @@ -323,7 +323,7 @@ public Object[] toArray() { } /** - * @see java.util.List#toArray(T[]) + * @see java.util.List#toArray(Object[]) */ public T[] toArray(T[] a) { diff --git a/src/main/java/org/jrimum/texgit/type/Filler.java b/src/main/java/org/jrimum/texgit/type/Filler.java index 8c9e8af..7ee56e6 100644 --- a/src/main/java/org/jrimum/texgit/type/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/Filler.java @@ -18,7 +18,7 @@ public interface Filler extends Serializable{ * * @param toFill * @param length - * @return + * @return String preenchida * * @since 0.2 */ @@ -30,7 +30,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * @@ -44,7 +44,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * @@ -58,7 +58,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * @@ -72,7 +72,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * @@ -86,7 +86,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * @@ -100,7 +100,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * @@ -114,7 +114,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * @@ -125,8 +125,7 @@ public interface Filler extends Serializable{ /** * Executa o método fill(String, int) passando o parâmetro * toFill como toFill.toString(). - *
- + * *

* Caso toFill seja null, o método * fill(String, int) receberá uma String nula como parâmetro. @@ -134,7 +133,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * @@ -145,8 +144,7 @@ public interface Filler extends Serializable{ /** * Executa o método fill(String, int) passando o parâmetro * toFill como toFill.write(). - *
- + * *

* Caso toFill seja null, o método * fill(String, int) receberá uma String nula como parâmetro. @@ -154,7 +152,7 @@ public interface Filler extends Serializable{ * * @param tofill * @param length - * @return + * @return String preenchida * * @see Filler#fill(String, int) * diff --git a/src/main/java/org/jrimum/texgit/type/Fixed.java b/src/main/java/org/jrimum/texgit/type/Fixed.java index f800001..9fbd384 100644 --- a/src/main/java/org/jrimum/texgit/type/Fixed.java +++ b/src/main/java/org/jrimum/texgit/type/Fixed.java @@ -30,24 +30,21 @@ /** * @author Gilmar P.S.L. - * + * */ public interface Fixed { - /** - *

- * Informa a validade para a fixação de uma ou mais medidas. Exemplo: - *
+ * Informa a validade para a fixação de uma ou mais medidas. Exemplo:
+ * *

 	 * {
-	 * isLenghtAsDefine();
-	 * isSizeAsDefine();
+	 * 	isLenghtAsDefine();
+	 * 	isSizeAsDefine();
 	 * }
 	 * 
- *

* - * @return + * @return Indicativo se está de acordo com o definido * * @throws IllegalStateException */ diff --git a/src/main/java/org/jrimum/texgit/type/component/Filler.java b/src/main/java/org/jrimum/texgit/type/component/Filler.java index 10c83ae..2ffeb96 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Filler.java +++ b/src/main/java/org/jrimum/texgit/type/component/Filler.java @@ -78,7 +78,7 @@ public Filler() { } /** - * @param padding + * @param fillWith */ public Filler(G fillWith) { @@ -87,7 +87,7 @@ public Filler(G fillWith) { } /** - * @param padding + * @param fillWith * @param sideToFill */ public Filler(G fillWith, Side sideToFill) { @@ -96,15 +96,15 @@ public Filler(G fillWith, Side sideToFill) { setSideToFill(sideToFill); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#getPadding() + /** + * @see org.jrimum.texgit.type#getPadding() */ public G getPadding() { return padding; } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#setPadding(G) + /** + * @see org.jrimum.texgit.type#setPadding(G) */ public void setPadding(G fillWith) { @@ -115,15 +115,15 @@ public void setPadding(G fillWith) { } } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#getSideToFill() + /** + * @see org.jrimum.texgit.type#getSideToFill() */ public Side getSideToFill() { return sideToFill; } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#setSideToFill(org.jrimum.texgit.type.component.Side) + /** + * @see org.jrimum.texgit.type#setSideToFill(org.jrimum.texgit.type.component.Side) */ public void setSideToFill(Side sideToFill) { @@ -134,8 +134,8 @@ public void setSideToFill(Side sideToFill) { } } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(java.lang.String, int) + /** + * @see org.jrimum.texgit.type#fill(java.lang.String, int) */ public String fill(String toFill, int length){ @@ -155,57 +155,57 @@ public String fill(String toFill, int length){ return str; } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(long, int) + /** + * @see org.jrimum.texgit.type#fill(long, int) */ public String fill(long tofill, int length){ return fill(String.valueOf(tofill), length); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(int, int) + /** + * @see org.jrimum.texgit.type#fill(int, int) */ public String fill(int tofill, int length){ return fill(String.valueOf(tofill), length); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(short, int) + /** + * @see org.jrimum.texgit.type#fill(short, int) */ public String fill(short tofill, int length){ return fill(String.valueOf(tofill), length); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(byte, int) + /** + * @see org.jrimum.texgit.type#fill(byte, int) */ public String fill(byte tofill, int length){ return fill(String.valueOf(tofill), length); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(char, int) + /** + * @see org.jrimum.texgit.type#fill(char, int) */ public String fill(char tofill, int length){ return fill(String.valueOf(tofill), length); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(double, int) + /** + * @see org.jrimum.texgit.type#fill(double, int) */ public String fill(double tofill, int length){ return fill(String.valueOf(tofill), length); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(float, int) + /** + * @see org.jrimum.texgit.type#fill(float, int) */ public String fill(float tofill, int length){ return fill(String.valueOf(tofill), length); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(java.lang.Object, int) + /** + * @see org.jrimum.texgit.type#fill(java.lang.Object, int) */ public String fill(Object tofill, int length){ @@ -218,8 +218,8 @@ public String fill(Object tofill, int length){ return fill(toFillTemp, length); } - /* (non-Javadoc) - * @see org.jrimum.texgit.type.component.X#fill(org.jrimum.texgit.TextStream, int) + /** + * @see org.jrimum.texgit.type#fill(org.jrimum.texgit.TextStream, int) */ public String fill(TextStream tofill, int length){ @@ -235,7 +235,7 @@ public String fill(TextStream tofill, int length){ /** * @param toFill * @param length - * @return + * @return String preenchida */ private String fillRight(String toFill, int length) { @@ -245,7 +245,7 @@ private String fillRight(String toFill, int length) { /** * @param toFill * @param length - * @return + * @return String preenchida */ private String fillLeft(String toFill, int length) { diff --git a/src/main/java/org/jrimum/texgit/type/component/Fillers.java b/src/main/java/org/jrimum/texgit/type/component/Fillers.java index db04438..b6aa9ed 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Fillers.java +++ b/src/main/java/org/jrimum/texgit/type/component/Fillers.java @@ -67,7 +67,7 @@ private Fillers(Filler filler){ /** * @param toFill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(java.lang.String, int) */ public String fill(String toFill, int length) { @@ -77,7 +77,7 @@ public String fill(String toFill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(long, int) */ public String fill(long tofill, int length) { @@ -87,7 +87,7 @@ public String fill(long tofill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(int, int) */ public String fill(int tofill, int length) { @@ -97,7 +97,7 @@ public String fill(int tofill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(short, int) */ public String fill(short tofill, int length) { @@ -107,7 +107,7 @@ public String fill(short tofill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(byte, int) */ public String fill(byte tofill, int length) { @@ -117,7 +117,7 @@ public String fill(byte tofill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(char, int) */ public String fill(char tofill, int length) { @@ -127,7 +127,7 @@ public String fill(char tofill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(double, int) */ public String fill(double tofill, int length) { @@ -137,7 +137,7 @@ public String fill(double tofill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(float, int) */ public String fill(float tofill, int length) { @@ -147,7 +147,7 @@ public String fill(float tofill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(java.lang.Object, int) */ public String fill(Object tofill, int length) { @@ -157,7 +157,7 @@ public String fill(Object tofill, int length) { /** * @param tofill * @param length - * @return + * @return String preenchida * @see org.jrimum.texgit.type.component.Filler#fill(org.jrimum.texgit.TextStream, int) */ public String fill(TextStream tofill, int length) { From 8758080f82238eb06ec26c84f1b110e065e60e9f Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Fri, 15 Nov 2013 17:01:15 -0200 Subject: [PATCH 68/87] =?UTF-8?q?OPEN=20-=20#3:=20Servidor=20de=20integra?= =?UTF-8?q?=C3=A7=C3=A3o=20cont=C3=ADnua=20para=20o=20projeto=20http://git?= =?UTF-8?q?hub.com/jrimum/projeto/issues/issue/3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Removendo parâmetro desnecessário --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7609c87..8674d9f 100644 --- a/pom.xml +++ b/pom.xml @@ -127,7 +127,6 @@ UTF-8 true private - 1.5 From b96ff0b87358f1197b78c798bd57610ed3365a7b Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L" Date: Tue, 17 Dec 2013 11:31:19 -0200 Subject: [PATCH 69/87] =?UTF-8?q?Pequeno=20ajuste=20para=20escrever=20some?= =?UTF-8?q?nte=20os=20inner=20records=20quando=20os=20dados=20est=C3=A3o?= =?UTF-8?q?=20presentes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Originado em https://groups.google.com/d/msg/jrimum-community/NMess_Gc98s/6WdRq-t5NrsJ --- .../org/jrimum/texgit/type/component/FlatFile.java | 12 ++++++++---- .../org/jrimum/texgit/type/component/Record.java | 4 ++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java index fc21c9c..0a858f2 100644 --- a/src/main/java/org/jrimum/texgit/type/component/FlatFile.java +++ b/src/main/java/org/jrimum/texgit/type/component/FlatFile.java @@ -148,8 +148,9 @@ record = recordFactory.create(id); lineIndex++; addRecord(record); - if(record.isHeadOfGroup()) + if(record.isHeadOfGroup()){ lineIndex = record.readInnerRecords(str,lineIndex,recordFactory); + } record = null; } @@ -167,8 +168,9 @@ record = null; lineIndex++; addRecord(record); - if(record.isHeadOfGroup()) + if(record.isHeadOfGroup()){ lineIndex = record.readInnerRecords(str,lineIndex,recordFactory); + } record = null; } @@ -214,8 +216,9 @@ public List write(String lineEnding) { "Erro ao tentar escrever o registro \"%s\".", rec.getName()), e); } - if(rec.isHeadOfGroup()) + if(rec.isHeadOfGroup() && rec.hasInnerRecords()){ out.addAll(rec.writeInnerRecords(lineEnding)); + } } }else{ @@ -232,8 +235,9 @@ public List write(String lineEnding) { "Erro ao tentar escrever o registro \"%s\".", rec.getName()), e); } - if(rec.isHeadOfGroup()) + if(rec.isHeadOfGroup() && rec.hasInnerRecords()){ out.addAll(rec.writeInnerRecords(lineEnding)); + } } } diff --git a/src/main/java/org/jrimum/texgit/type/component/Record.java b/src/main/java/org/jrimum/texgit/type/component/Record.java index 7ea260b..39de234 100644 --- a/src/main/java/org/jrimum/texgit/type/component/Record.java +++ b/src/main/java/org/jrimum/texgit/type/component/Record.java @@ -382,6 +382,10 @@ public org.jrimum.texgit.Record setValue(String fieldName, G value) { return this; } + + public boolean hasInnerRecords(){ + return getInnerRecords() != null && !getInnerRecords().isEmpty(); + } public String getName() { return name; From 8ca1a56628a6f671f52c219c6d009bdec8b0403e Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Sat, 1 Feb 2014 14:13:38 -0200 Subject: [PATCH 70/87] =?UTF-8?q?Direitos=20autorais=20Projeto=20JRimum:?= =?UTF-8?q?=20Licenciado=20sob=20a=20Licen=C3=A7a=20Apache,=20Vers=C3=A3o?= =?UTF-8?q?=202.0=20("LICEN=C3=87A").?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..37ec93a --- /dev/null +++ b/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 1543482e8347de335f6003bdfe6ae383ae272e0e Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Sat, 1 Feb 2014 16:37:42 -0200 Subject: [PATCH 71/87] =?UTF-8?q?Adi=C3=A7=C3=A3o=20de=20changelog.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..3e33488 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +Texgit Changelog +============================= + +0.2.3 (2014/02/01) suport bopepo-0.2.3 +--------------------------------------- + +**Improvement** + + * #1: Implementação de testes para funcionalidade LineOfFields \ No newline at end of file From 7cbc3f2bcbfd32ea17508ed6164c68009e24abee Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Sat, 1 Feb 2014 17:40:33 -0200 Subject: [PATCH 72/87] =?UTF-8?q?Informa=C3=A7=C3=A3o=20da=20primeira=20ve?= =?UTF-8?q?rs=C3=A3o=20liberada.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e33488..d8d89f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,4 +6,8 @@ Texgit Changelog **Improvement** - * #1: Implementação de testes para funcionalidade LineOfFields \ No newline at end of file + * #1: Implementação de testes para funcionalidade LineOfFields + + +0.2.0-SNAPSHOT (2010/12/07) incubation +--------------------------------------- \ No newline at end of file From 0be0a5b77eacb70808daff7f15659fb8312a97dd Mon Sep 17 00:00:00 2001 From: "Gilmar P.S.L." Date: Wed, 5 Feb 2014 00:49:12 -0200 Subject: [PATCH 73/87] =?UTF-8?q?#3:=20Servidor=20de=20integra=C3=A7=C3=A3?= =?UTF-8?q?o=20cont=C3=ADnua=20para=20o=20projeto=20http://github.com/jrim?= =?UTF-8?q?um/projeto/issues/issue/3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Novo plugin maven para garantir compilação java5 --- pom.xml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8674d9f..cbc2d70 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.jrimum jrimum-texgit Projeto Texgit - 0.2.0-SNAPSHOT + 0.2.3-DEV-SNAPSHOT Projeto open source de componentes de software para o domínio de negócios do Brasil. http://www.jrimum.org/texgit @@ -62,6 +62,27 @@ 1.5 + + org.codehaus.mojo + animal-sniffer-maven-plugin + 1.6 + + + org.codehaus.mojo.signature + java15 + 1.0 + + + + + animal-sniffer + compile + + check + + + + maven-assembly-plugin 2.4 @@ -181,6 +202,10 @@ org.jrimum.snapshots http://jrimum.org/maven/content/repositories/org.jrimum.snapshots/ + + org.jrimum.releases + http://jrimum.org/maven/content/repositories/org.jrimum.releases/ + \ No newline at end of file From ed020b61df7814a3eda95111a08cbe672ecd089c Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Fri, 20 Dec 2019 17:55:15 -0300 Subject: [PATCH 74/87] =?UTF-8?q?prepara=20lan=C3=A7amento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 943626c..bba7c08 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.jrimum jrimum-texgit Projeto Texgit - 0.2.3-SNAPSHOT + 0.2.3 Projeto open source de componentes de software para o domínio de negócios do Brasil. http://www.jrimum.org/texgit @@ -162,7 +162,7 @@ org.jrimum jrimum-utilix - 0.2.3-DEV-SNAPSHOT + 0.2.3 sun-jaxb From 373674ec903b3de32e19f7d6eecba79b7a766467 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Mon, 30 Dec 2019 09:48:56 -0300 Subject: [PATCH 75/87] Create maven.yml --- .github/workflows/maven.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/maven.yml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 0000000..06f466a --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,17 @@ +name: Java CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Build with Maven + run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none package --file pom.xml From 83bd0b532040fb8e70f0656960aedcd6c7f93467 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Tue, 15 Sep 2020 15:02:20 -0300 Subject: [PATCH 76/87] Configuring Apache Maven for use with GitHub Packages --- .github/workflows/maven.yml | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 06f466a..827be27 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -8,10 +8,20 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Build with Maven - run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none package --file pom.xml + - uses: actions/checkout@v1 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Cache Maven packages + uses: actions/cache@v2 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + - name: Build with Maven + run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none package --file pom.xml + - name: Publish to GitHub Packages + env: + GITHUB_TOKEN: ${{ github.token }} + run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none deploy From 9310db3321acf151e6526315f6e6f94de904fa3e Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Tue, 15 Sep 2020 15:04:54 -0300 Subject: [PATCH 77/87] Configuring Apache Maven for use with GitHub Packages --- pom.xml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index bba7c08..cea3fba 100644 --- a/pom.xml +++ b/pom.xml @@ -188,24 +188,29 @@ JBoss Repository http://repository.jboss.org/nexus/content/groups/public-jboss/
- +
- + + + github + GitHub gilbertoca Apache Maven Packages + https://maven.pkg.github.com/gilbertoca/jrimum + From 6d481a903382c363cfbe4f0747cba004464937c5 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Tue, 15 Sep 2020 15:08:26 -0300 Subject: [PATCH 78/87] add new maven repo --- pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pom.xml b/pom.xml index cea3fba..933c10a 100644 --- a/pom.xml +++ b/pom.xml @@ -184,6 +184,10 @@ + + Gilbertoca github + https://maven.pkg.github.com/gilbertoca/jrimum + JBoss Repository http://repository.jboss.org/nexus/content/groups/public-jboss/ From a71e6d84d40944401262fee872c5fcec9665f865 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Tue, 15 Sep 2020 15:08:59 -0300 Subject: [PATCH 79/87] change version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 933c10a..7fdcac4 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.jrimum jrimum-texgit Projeto Texgit - 0.2.3 + 0.2.3-SNAPSHOT Projeto open source de componentes de software para o domínio de negócios do Brasil. http://www.jrimum.org/texgit From 3ae35e22ba1a5356880276c275fa612648679917 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Tue, 15 Sep 2020 15:29:33 -0300 Subject: [PATCH 80/87] reverting the default github package repo --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7fdcac4..2ffd81b 100644 --- a/pom.xml +++ b/pom.xml @@ -186,7 +186,7 @@ Gilbertoca github - https://maven.pkg.github.com/gilbertoca/jrimum + https://maven.pkg.github.com/gilbertoca/utilix JBoss Repository @@ -213,7 +213,7 @@ github GitHub gilbertoca Apache Maven Packages - https://maven.pkg.github.com/gilbertoca/jrimum + https://maven.pkg.github.com/gilbertoca/texgit From aa58371291e425ec42422813b65705a55b5aa4f0 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Tue, 15 Sep 2020 15:31:45 -0300 Subject: [PATCH 81/87] using the SNAPSHOT version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2ffd81b..b0a264e 100644 --- a/pom.xml +++ b/pom.xml @@ -162,7 +162,7 @@ org.jrimum jrimum-utilix - 0.2.3 + 0.2.3-SNAPSHOT sun-jaxb From 10ea31f1155304c3448469cc83d0d1b15d180f35 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Tue, 15 Sep 2020 15:36:48 -0300 Subject: [PATCH 82/87] Trying to fix 401 Unauthorized --- .github/workflows/maven.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 827be27..86c6b4f 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -20,6 +20,8 @@ jobs: key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Build with Maven + env: + GITHUB_TOKEN: ${{ github.token }} run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none package --file pom.xml - name: Publish to GitHub Packages env: From 136305b1e4548a8daee6f824d564cd63c7eae85c Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Wed, 16 Sep 2020 12:07:29 -0300 Subject: [PATCH 83/87] make it visible for local repo --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 86c6b4f..473f002 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -22,7 +22,7 @@ jobs: - name: Build with Maven env: GITHUB_TOKEN: ${{ github.token }} - run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none package --file pom.xml + run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none install --file pom.xml - name: Publish to GitHub Packages env: GITHUB_TOKEN: ${{ github.token }} From afa5816a53fb044166dbff58c68ae86b9c2b726a Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Wed, 16 Sep 2020 14:25:53 -0300 Subject: [PATCH 84/87] repository id --- pom.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b0a264e..1c5f5f0 100644 --- a/pom.xml +++ b/pom.xml @@ -185,8 +185,9 @@ - Gilbertoca github - https://maven.pkg.github.com/gilbertoca/utilix + github + GitHub gilbertoca Apache Maven Packages + https://maven.pkg.github.com/gilbertoca/utilix JBoss Repository From 7fedf4319aef4b6ad050fee7d2b57b0edc8d34b8 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Wed, 7 Apr 2021 09:52:56 -0300 Subject: [PATCH 85/87] Update pom.xml --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 1c5f5f0..d2ab2a1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.jrimum jrimum-texgit Projeto Texgit - 0.2.3-SNAPSHOT + 0.2.3 Projeto open source de componentes de software para o domínio de negócios do Brasil. http://www.jrimum.org/texgit @@ -162,7 +162,7 @@ org.jrimum jrimum-utilix - 0.2.3-SNAPSHOT + 0.2.3 sun-jaxb From 1adee4e637e825dbe433b55ebbf7837e24b3f277 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade Date: Fri, 29 Nov 2024 13:36:55 -0300 Subject: [PATCH 86/87] Adiciona plugin github --- pom.xml | 442 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 235 insertions(+), 207 deletions(-) diff --git a/pom.xml b/pom.xml index d2ab2a1..9b39959 100644 --- a/pom.xml +++ b/pom.xml @@ -1,221 +1,249 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - 4.0.0 - org.jrimum - jrimum-texgit - Projeto Texgit - 0.2.3 - Projeto open source de componentes de software para o domínio de negócios do Brasil. - http://www.jrimum.org/texgit + 4.0.0 + org.jrimum + jrimum-texgit + Projeto Texgit + 0.2.3 + Projeto open source de componentes de software para o domínio de negócios do Brasil. + http://www.jrimum.org/texgit - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + - - Projeto JRimum - http://www.jrimum.org - + + Projeto JRimum + http://www.jrimum.org + - - GitHub - http://github.com/jrimum/texgit/issues - + + GitHub + http://github.com/jrimum/texgit/issues + - - http://github.com/jrimum/texgit - + + http://github.com/jrimum/texgit + - - - Gilmar P. S. L. - gilmatryx@gmail.com - - - Misael Barreto - misaelbarreto@gmail.com - - - Rômulo Augusto - romulomail@gmail.com - - + + + Gilmar P. S. L. + gilmatryx@gmail.com + + + Misael Barreto + misaelbarreto@gmail.com + + + Rômulo Augusto + romulomail@gmail.com + + - - UTF-8 - UTF-8 - + + UTF-8 + UTF-8 + + gilbertoca + mvn-artifact + main + github + - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - 1.5 - 1.5 - - - - org.codehaus.mojo - animal-sniffer-maven-plugin - 1.6 - - - org.codehaus.mojo.signature - java15 - 1.0 - - - - - animal-sniffer - compile - - check - - - - - - maven-assembly-plugin - 2.4 - - - src/main/assembly/jrimum-texgit-with-dependencies.xml - - - - - make-assembly - package - - single - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.16 - - false - - org/jrimum/texgit/**/* - - - org/jrimum/texgit/excludes/**/* - org/jrimum/texgit/**/*$* - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - package - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - - attach-javadoc - package - - jar - - - - - UTF-8 - UTF-8 - true - private - - - - org.apache.maven.plugins - maven-deploy-plugin - 2.8.1 - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + 1.8 + 1.8 + + + + org.codehaus.mojo + animal-sniffer-maven-plugin + 1.20 + + + org.codehaus.mojo.signature + java15 + 1.0 + + + + + animal-sniffer + compile + + check + + + + + + maven-assembly-plugin + 2.4 + + + src/main/assembly/jrimum-texgit-with-dependencies.xml + + + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.16 + + false + + org/jrimum/texgit/**/* + + + org/jrimum/texgit/excludes/**/* + org/jrimum/texgit/**/*$* + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + package + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.3.0 + + + attach-javadoc + package + + jar + + + + + UTF-8 + UTF-8 + true + private + + + + com.github.github + site-maven-plugin + 0.12 + + Maven artifacts for ${project.version} + true + ${project.build.directory}/mvn-artifact + refs/heads/${branch-name} + + **/* + + true + ${repository-name} + ${repository-owner} + ${github.global.server} + + + + + site + + deploy + + + + + maven-deploy-plugin + 2.8.2 + + + internal.repo::default::file://${project.build.directory}/mvn-artifact + + + - - - org.jrimum - jrimum-utilix - 0.2.3 - - - sun-jaxb - jaxb-api - 2.2 - - - sun-jaxb - jaxb-impl - 2.2 - - - - junit - junit - 4.11 - test - - + + - - - github - GitHub gilbertoca Apache Maven Packages - https://maven.pkg.github.com/gilbertoca/utilix - - - JBoss Repository - http://repository.jboss.org/nexus/content/groups/public-jboss/ - - - + + + org.jrimum + jrimum-utilix + 0.2.3 + + + javax.xml.bind + jaxb-api + 2.3.0 + + + com.sun.xml.bind + jaxb-core + 2.3.0 + + + com.sun.xml.bind + jaxb-impl + 2.3.0 + + + + junit + junit + 4.11 + test + + - - - - github - GitHub gilbertoca Apache Maven Packages - https://maven.pkg.github.com/gilbertoca/texgit - - + + + mvn-artifact-publish + https://github.com/${repository-owner}/${repository-name}/${branch-name} + + true + always + + + + mvn-artifact + https://raw.github.com/${repository-owner}/${repository-name}/${branch-name} + + + + + internal.repo + Temporary Staging Repository + file://${project.build.directory}/mvn-artifact + + From b09a0fe734ee7ddaf5cc134fd1dd8015d8abadf6 Mon Sep 17 00:00:00 2001 From: Gilberto Caetano de Andrade <3083703+gilbertoca@users.noreply.github.com> Date: Fri, 29 Nov 2024 14:14:56 -0300 Subject: [PATCH 87/87] Desabilita deploy automatico --- .github/workflows/maven.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 473f002..85b8f0a 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -8,22 +8,21 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4.2.2 - name: Set up JDK 1.8 - uses: actions/setup-java@v1 + uses: actions/setup-java@v4.5.0 with: - java-version: 1.8 + distribution: 'adopt' + java-version: 8.0.432+6 - name: Cache Maven packages - uses: actions/cache@v2 + uses: actions/cache@v4.1.2 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Build with Maven - env: - GITHUB_TOKEN: ${{ github.token }} run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none install --file pom.xml - - name: Publish to GitHub Packages - env: - GITHUB_TOKEN: ${{ github.token }} - run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none deploy + # - name: Publish to personal mave repository + # env: + # GITHUB_TOKEN: ${{ github.token }} + # run: mvn -V javadoc:javadoc -DadditionalJOption=-Xdoclint:none deploy --file pom.xml