Releases: walmartlabs/gozer
0.3.4
0.3.3
0.3.2
0.3.1
This was intended as a maintenance release for 0.3.0 however several changes can affect backward compatibility
The following issues were fixed:
#122
#131
The following changes affect backward compatibility:
- The
RetailSellingUnitUtil
was removed from the project (#125) - the
isLoopingValid
method was not added to theX12TransactionSetWithLoop
interface and was removed fromAsn856TransactionSet
(#130) - the attribute
lineNumber
was removed fromX12ErrorDetail
(#133) - the attribute
message
was renamed toissueText
onX12ErrorDetail
The following changes were also made:
- several looping error messages (reported in
X12ErrorDetail
) were updated so that theissueText
was more generic for ease in reporting. Any specific values related to the looping error are now placed in theinvalidValue
attribute. - The
getLoopingErrors
method was added to newX12TransactionSetWithLoop
interface so that it was accessible in a standard way for any Transaction Set that supports loops. Originally it was added directly to theAsn856TransactionSet
. - there is a new
AbstractX12TransactionSetWithLoop
that handles implementingX12TransactionSetWithLoop
with additional helper methods - The README was updated to reflect the latest in Gozer. The sample parsers were updated as well to (hopefully) make usage of Gozer more clear. However, the pages to create parsers and transaction set parsers was deferred to later (#71)
- Spring 5 as a dependency was removed and replaced w/ Apache Commons
- The Batch Util was updated
0.3.0
The Choice is Made and the Release has Come!
The long awaited next release of Gozer is finally here!
This release should NOT break backward compatibility with the DEX 894 support. This official release will break backward compatibility with the 0.3.0 milestones (1-6). It is compatible with milestone 8.
ASN Transaction Set Parser
Over the last several milestones the DefaultAsn856TransactionSetParser
was added and refined in the Walmart Labs staging environment using production data. This implements #43
Changing the way HL issues are handled
In order to enable users to easily generate an 824 error message when there are looping errors a significant change was made to the GenericTransactionSetParser
and the DefaultAsn856TransactionSetParser
. Neither of these parsers will throw an X12ParserException
when the looping structure of a document is broken (see the X12LoopUtil
and #115 ). This is a change starting in milestone 8.
Instead the GenericTransactionSet
and the AsnTransactionSet
will have new attributes:
- boolean loopingValid
- List loopingErrors
When an error in looping occurs then loopingValid will be set to false and all of the issues will be added to the loopingErrors list.
It is expected that after parsing, the code should verify how looping was handled.
StandardX12Document x12 = asnParser.parse(new String(asnBytes));
List<X12TransactionSet> txForGroupOne = x12.getGroups().get(0).getTransactions();
AsnTransactionSet asnTx = (AsnTransactionSet) txForGroupOne.get(0);
if (!asnTx.isLoopingValid()) {
// handle looping errors
} else {
// looping ok
}
Generic Transaction Set Parser
A GenericTransactionSet
and GenericTransactionSetParser
was added. This capability can handle any standard EDI X12 format. However it is generic and only provides the raw data in X12Segment
and X12Loop
rather than the parsed out objects.
Here is how the ASN parser would allow code to get the shipping id:
String docNumber = asnTx.getShippingIdentifer();
Here is how to do the same thing w/ the generic capability:
X12Segment beginSegment = txSet. getBeginningSegment();
if (beginSegment.getIdentifier()).equals(“BSN”) {
String docNumber = beginSegment.getElement(2);
Access to unparsed segments on Loops
The X12ParsedLoop
has a new attribute - a list of unparsedSegments
When an unexpected segment is encountered on a Loop it will be added to this list.
An example:
private void doTareSegments(X12Segment segment, SegmentIterator segmentIterator, Tare tare) {
switch (segment.getIdentifier()) {
case PKGPackaging.IDENTIFIER:
tare.addPKGPackaging(PKGPackagingParser.parse(segment));
break;
case PALPalletType.IDENTIFIER:
tare.setPal(PALPalletTypeParser.parse(segment));
break;
case MANMarkNumber.IDENTIFIER:
tare.addMANMarkNumber(MANMarkNumberParser.parse(segment));
break;
default:
tare.addUnparsedSegment(segment);
break;
}
}
Various changes across the 0.3.0 Milestones
Updated the package structure
The packages were originally organized as follows
*.asn856
*.common
*.po850
*.dex.dex894
*.standard
They are now organized as follows:
*.common
*.dex.dex894
*.standard
*.standard.txset.asn856
*.standard.txset.asn856.loop
*.standard.txset.asn856.segment
*.standard.txset.generic
*.standard.txset.po850
Changes to types of attributes in ASN Segments
Several segments used BigDecimal to capture data elements. These have been switched to a String. This will prevent Gozer from throwing an X12ParserException
when a supplier passes a non-numeric value. This will allow users of the framework to check the values and to easily generate an 824 file indicating the problem as well as include the pertinent identifying information for the EDI file and transaction set.
- SN1ItemDetail
-- no longer uses BigDecimal for segment data elements - TD1CarrierDetail
-- no longer uses BigDecimal for segment data elements
The ConversionUtil
will remain part of Gozer so that applications can use it to convert values to a BigDecimal.
Updated ASN Loops and ASN segments
The primary reason is the following segments have been updated on the ASN loops based on comparison with the various EDI guides used in Walmart
- Shipment
-- updated TD1 segment to a List
-- updated TD5 segment to a List
-- updated TD3 segment to a List - Order
-- added TD1 segment as a List - Tare
-- updated PKG segment to a List
-- added PAL segment
-- updated MAN segment to a List - Pack
-- updated MAN segment to a List
-- updated TD1 segment to a List
-- added N1 segment
-- added PO4 segment - Item
-- added DTM segment as a List
-- added REF segment as a List - N1PartyIdentification
-- updated N3 segment to a List
-- added REF segment as a List
0.3.0 Milestone 8
This release patches issues #115, #49 and wraps up #43
The biggest change:
Changing the way HL issues are handled
In order to enable users to easily generate an 824 error message when there are looping errors a significant change was made to the GenericTransactionSetParser
and the DefaultAsn856TransactionSetParser
. Neither of these parsers will throw an X12ParserException
when the looping structure of a document is broken (see the X12LoopUtil
and #115 ).
Instead the GenericTransactionSet
and the AsnTransactionSet
will have new attributes:
- boolean loopingValid
- List loopingErrors
When an error in looping occurs then loopingValid will be set to false and all of the issues will be added to the loopingErrors list.
It is expected that after parsing, the code should verify how looping was handled.
StandardX12Document x12 = asnParser.parse(new String(asnBytes));
List<X12TransactionSet> txForGroupOne = x12.getGroups().get(0).getTransactions();
AsnTransactionSet asnTx = (AsnTransactionSet) txForGroupOne.get(0);
if (!asnTx.isLoopingValid()) {
// handle looping errors
} else {
// looping ok
}
0.3.0 Milestone 7
This milestone will break backward compatibility with the previous milestones for 0.3.0
Updated ASN Segments
Several segments used BigDecimal to capture data elements. These have been switched to a String. This will prevent Gozer from throwing an X12ParserException
when a supplier passes a non-numeric value. This will allow users of the framework to check the values and to easily generate an 824 file indicating the problem as well as include the pertinent identifying information for the EDI file and transaction set.
- SN1ItemDetail
-- no longer uses BigDecimal for segment data elements - TD1CarrierDetail
-- no longer uses BigDecimal for segment data elements - N1PartyIdentification
-- updated N3 segment to a List
-- added REF as a List
The ConversionUtil
will remain part of Gozer so that applications can use it to convert values to a BigDecimal.
Updated ASN Loops
The primary reason is the following segments have been updated on the ASN loops based on comparison with the various EDI guides used in Walmart
- Shipment
-- updated TD1 segment to a List
-- updated TD5 segment to a List
-- updated TD3 segment to a List - Order
-- added TD1 segment as a List - Tare
-- updated PKG segment to a List
-- added PAL segment
-- updated MAN segment to a List - Pack
-- updated MAN segment to a List
-- added N1 segment
-- added PO4 segment
-- added TD1 segment as a List - Item
-- added DTM segment as a List
-- added REF segment as a List
Access to unparsed segments on Loops
The X12ParsedLoop
has a new attribute - a list of unparsedSegments
When an unexpected segment is encountered on a Loop it will be added to this list.
An example:
private void doTareSegments(X12Segment segment, SegmentIterator segmentIterator, Tare tare) {
switch (segment.getIdentifier()) {
case PKGPackaging.IDENTIFIER:
tare.addPKGPackaging(PKGPackagingParser.parse(segment));
break;
case PALPalletType.IDENTIFIER:
tare.setPal(PALPalletTypeParser.parse(segment));
break;
case MANMarkNumber.IDENTIFIER:
tare.addMANMarkNumber(MANMarkNumberParser.parse(segment));
break;
default:
tare.addUnparsedSegment(segment);
break;
}
}
0.3.0 Milestone 6
This milestone release represents the current work on the 0.3.0 version of Gozer
Additions since M4 (there was no M5)
This release is stable and has been heavily tested against Walmart production data
0.3.0 Milestone 4
This milestone release represents the current work on the 0.3.0 version of Gozer
Additions since M3
This release is stable but is still considered a beta.
It has been released for two reasons:
- the work that has been done is stable and can be used to start development while we finish things up
- the Walmart Labs policies currently restrict the ability for the Walmart internal repository (Proximity) to mirror snapshots
0.3.0 Milestone 3
This milestone release represents the current work on the 0.3.0 version of Gozer
Additions since M2
Important Note:
The TD1 object was using the UnitOfMeasure enum (from DEX). This was changed to a String to align w/ the other objects in the ASN. This will break backward compatibility with the prior M1 and M2 milestone releases as we prepare for the final 0.3.0 release.
This release is stable but is still considered a beta.
It has been released for two reasons:
- the work that has been done is stable and can be used to start development while we finish things up
- the Walmart Labs policies currently restrict the ability for the Walmart internal repository (Proximity) to mirror snapshots