IP*Works!

ipworks
Class Netcode

java.lang.Object
  |
  +--ipworks.Netcode

public class Netcode
extends java.lang.Object

The NetCode control can be used to encode or decode files or strings. UUEncode , MIME's Base64 and Quoted-Printable , as well as URL encoding formats are currently supported.

NetCode's operation is controlled by calling the control's methods or assigning a corresponding value to the Action property. The encoding format is specified by the Format property. The binary data, or the name of the file containing binary data, is specified by the DecodedData property and the encoded data or filename is specified by the EncodedData property. The FileName property may be used to override the default file names or to specify a directory during uuencoding. After uudecoding, the FileName property contains the fully specified file name of the decoded file.

Understanding Encoding/Decoding

Most of mail systems use only 7 bits to transmit messages. A binary file such as an archive or a non-plain text formatted file produced from a text processor should be first encoded in 7 bit code before email transfer.

Decoding is the inverse process: creation of the original file from the encoded data. Encoded data are often split over several files because of the size limit placed on the email message. Each message is preceded by information about splitting and also the mail header. NetCode supports this case in both directions:

- during encoding setting the MaxFileSize property to the maximum size of a message body instructs NetCode to split the encoded data over several files. Multiple filenames can be specified by using question marks "?".

- during decoding , the body messages can be saved in separate files named namexxx.ext where xxx is a numeral starting at 000 and ext is ".uue", ".b16", or ".q_p" according to Format . This multiple filename should be given to EncodedData . While uudecoding, if the IntelliCode property is set to True, NetCode tries to filter the data that don't belong to the pure uuencoded data (also the mail header).


Field Summary
static int fmtBASE64
           
static int fmtQP
           
static int fmtURL
           
static int fmtUUEncode
           
static int netcodeDecodeToFile
           
static int netcodeDecodeToString
           
static int netcodeEncodeToFile
           
static int netcodeEncodeToString
           
static int netcodeIdle
           
 
Constructor Summary
Netcode()
           
 
Method Summary
 void addNetcodeEventListener(NetcodeEventListener l)
           
 void decodeToFile()
          Decode to file.
 void decodeToString()
          Decode to string.
 void encodeToFile()
          Encode to file.
 void encodeToString()
          Encode to string.
 void fireProgress(int percentDone)
          Occurs when PercentDone of the input is read.
 int getAction()
          Controls the operation of NetCode.
 byte[] getDecodedData()
          Filename of the decoded data or the decoded data itself.
 byte[] getEncodedData()
          Filename of the encoded data or the encoded data itself.
 int getFileCnt()
          Shows the number of encoded files the component has read from or written into.
 java.lang.String getFileName()
          The destination filename for the encoded data.
 int getFormat()
          Shows the type of encoding to be used.
 int getMaxFileSize()
          When decoding, controls whether encoded data should be split into several files and gives the maximum allowed size for these files.
 java.lang.String getMode()
          The UNIX-style filemode when uuencoding / uudecoding.
 int getProgressStep()
          Controls the granularity at which the Progress event is fired.
 boolean isIntelliCode()
          Controls whether NetCode should try to interpret several concatenated messages while uudecoding.
 boolean isOverwrite()
          Controls whether created file(s) should overwrite already existing file(s).
 void removeNetcodeEventListener(NetcodeEventListener l)
           
 void setAction(int action)
          Controls the operation of NetCode.
 void setDecodedData(byte[] decodedData)
          Filename of the decoded data or the decoded data itself.
 void setEncodedData(byte[] encodedData)
          Filename of the encoded data or the encoded data itself.
 void setFileName(java.lang.String fileName)
          The destination filename for the encoded data.
 void setFormat(int format)
          Shows the type of encoding to be used.
 void setIntelliCode(boolean intelliCode)
          Controls whether NetCode should try to interpret several concatenated messages while uudecoding.
 void setMaxFileSize(int maxFileSize)
          When decoding, controls whether encoded data should be split into several files and gives the maximum allowed size for these files.
 void setMode(java.lang.String mode)
          The UNIX-style filemode when uuencoding / uudecoding.
 void setOverwrite(boolean overwrite)
          Controls whether created file(s) should overwrite already existing file(s).
 void setProgressStep(int progressStep)
          Controls the granularity at which the Progress event is fired.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

netcodeIdle

public static final int netcodeIdle

netcodeDecodeToFile

public static final int netcodeDecodeToFile

netcodeEncodeToFile

public static final int netcodeEncodeToFile

netcodeDecodeToString

public static final int netcodeDecodeToString

netcodeEncodeToString

public static final int netcodeEncodeToString

fmtUUEncode

public static final int fmtUUEncode

fmtBASE64

public static final int fmtBASE64

fmtQP

public static final int fmtQP

fmtURL

public static final int fmtURL
Constructor Detail

Netcode

public Netcode()
Method Detail

getAction

public int getAction()
Controls the operation of NetCode. Setting the Action property to a valid action code makes the control perform the associated action. If the action completes successfully, execution continues normally, and Action is reset to 0 (Idle). If an error happens, then an IPWorksException exception is raised.

The following are the possible values for the Action property and the corresponding descriptions:

netcodeIdle (0)
Default.
netcodeDecodeToFile (1)
Decode with the format given in Format . Data is read from the EncodedData file(s) and written in the filename specified in the encoded data.
When UUDecoding the created filename will by default be the one specified in the uuencoded data. DecodedData or, if DecodedData is empty, FileName can be used to override this value.
If the string terminates with a backslash "\\" it is interpreted as a directory in which to create decoded files. FileName contains the filename for the created file.
netcodeEncodeToFile (2)
Encode with the format given in Format . Data is read from the file DecodedData and is encoded in the file(s) EncodedData . When uuencoding, the uuencoded data contain as filename the value given in FileName or, if empty, the value of DecodedData .
While UUEncoding it is recommended to give the full file path in EncodedData and the filename in FileName .
The current version of NetCode creates no message headers. If a MIME standard encoding is used such as Base64 Encoding or Quoted Printable Encoding the user should fill the header values appropriately.
If MaxFileSize is set and the encoded data take more space than MaxFileSize , the data is split over several files. In this case, the user can specify more than one filename by passing them to EncodedData in the form name? . The filenames should exist as path\\file0.ext , path\\file1.ext ... Question marks "?" are expanded to numerals starting with 0. NetCode appends the extension ".uue", ".b16", or ".q_p" (depending on the value of Format ) to the filename.
netcodeDecodeToString (3)
Decode according to Format : The string EncodedData is encoded into DecodedData . FileName contains the filename contained in the uuencoded data.
netcodeEncodeToString (4)
Encode according to Format : DecodedData is encoded into EncodedData . (the data is considered binary while uuencoding and Base64 Format s, and Text during QuotedPrintable ones.) When uuencoding the filename is taken from the FileName property.


setAction

public void setAction(int action)
               throws IPWorksException
Controls the operation of NetCode. Setting the Action property to a valid action code makes the control perform the associated action. If the action completes successfully, execution continues normally, and Action is reset to 0 (Idle). If an error happens, then an IPWorksException exception is raised.

The following are the possible values for the Action property and the corresponding descriptions:

netcodeIdle (0)
Default.
netcodeDecodeToFile (1)
Decode with the format given in Format . Data is read from the EncodedData file(s) and written in the filename specified in the encoded data.
When UUDecoding the created filename will by default be the one specified in the uuencoded data. DecodedData or, if DecodedData is empty, FileName can be used to override this value.
If the string terminates with a backslash "\\" it is interpreted as a directory in which to create decoded files. FileName contains the filename for the created file.
netcodeEncodeToFile (2)
Encode with the format given in Format . Data is read from the file DecodedData and is encoded in the file(s) EncodedData . When uuencoding, the uuencoded data contain as filename the value given in FileName or, if empty, the value of DecodedData .
While UUEncoding it is recommended to give the full file path in EncodedData and the filename in FileName .
The current version of NetCode creates no message headers. If a MIME standard encoding is used such as Base64 Encoding or Quoted Printable Encoding the user should fill the header values appropriately.
If MaxFileSize is set and the encoded data take more space than MaxFileSize , the data is split over several files. In this case, the user can specify more than one filename by passing them to EncodedData in the form name? . The filenames should exist as path\\file0.ext , path\\file1.ext ... Question marks "?" are expanded to numerals starting with 0. NetCode appends the extension ".uue", ".b16", or ".q_p" (depending on the value of Format ) to the filename.
netcodeDecodeToString (3)
Decode according to Format : The string EncodedData is encoded into DecodedData . FileName contains the filename contained in the uuencoded data.
netcodeEncodeToString (4)
Encode according to Format : DecodedData is encoded into EncodedData . (the data is considered binary while uuencoding and Base64 Format s, and Text during QuotedPrintable ones.) When uuencoding the filename is taken from the FileName property.


getDecodedData

public byte[] getDecodedData()
Filename of the decoded data or the decoded data itself. When uuencoding, the value of FileName is the filename that will be written in EncodedData . If FileName is empty, the value of the DecodedData property is taken. It is recommended that EncodedData contains the full path and FileName only the filename, so that no problems occur while uudecoding in a foreign system.

When decoding, the control tries to generate the name for the created file in the following order: DecodedData , FileName , or when the format is UUEncode, the specified filename in the uuencoded data itself. If DecodedData or FileName end with a backslash "\\" they are interpreted as directories and the control tries to create the given filename in this directory. If this is the case, FileName shows the name of the created file.


setDecodedData

public void setDecodedData(byte[] decodedData)
                    throws IPWorksException
Filename of the decoded data or the decoded data itself. When uuencoding, the value of FileName is the filename that will be written in EncodedData . If FileName is empty, the value of the DecodedData property is taken. It is recommended that EncodedData contains the full path and FileName only the filename, so that no problems occur while uudecoding in a foreign system.

When decoding, the control tries to generate the name for the created file in the following order: DecodedData , FileName , or when the format is UUEncode, the specified filename in the uuencoded data itself. If DecodedData or FileName end with a backslash "\\" they are interpreted as directories and the control tries to create the given filename in this directory. If this is the case, FileName shows the name of the created file.


getEncodedData

public byte[] getEncodedData()
Filename of the encoded data or the encoded data itself. If the encoded data are spread over several files, the filenames are passed to EncodedData in the form name? . Question marks "?" are expanded to numerals starting with 0. The filenames should exist as path\\file000.ext and passed to EncodedData in the form name??? . Question marks "?" are expanded to numerals starting with 000 (the number of zeros "0" equals that of question marks "?").

The control appends the extension ".uue", ".b16", or ".q_p" depending on Format immediately after the generated numbers. FileCnt contains the number of encoded files.

See also the Format , IntelliCode , and MaxFileSize properties when working with multiple files.


setEncodedData

public void setEncodedData(byte[] encodedData)
                    throws IPWorksException
Filename of the encoded data or the encoded data itself. If the encoded data are spread over several files, the filenames are passed to EncodedData in the form name? . Question marks "?" are expanded to numerals starting with 0. The filenames should exist as path\\file000.ext and passed to EncodedData in the form name??? . Question marks "?" are expanded to numerals starting with 000 (the number of zeros "0" equals that of question marks "?").

The control appends the extension ".uue", ".b16", or ".q_p" depending on Format immediately after the generated numbers. FileCnt contains the number of encoded files.

See also the Format , IntelliCode , and MaxFileSize properties when working with multiple files.


getFileCnt

public int getFileCnt()
Shows the number of encoded files the component has read from or written into. If the user specifies one or more questions marks "?" in EncodedData they will be expanded to 000 to FileCnt - 1 (the number of question marks "?" specifies the number of figures).

Please refer to EncodedData for filename conventions.


getFileName

public java.lang.String getFileName()
The destination filename for the encoded data. When uuencoding, the FileName property contains the filename that is specified in the uuencoded data.

When decoding, if the value of the property is not empty, it shows the control where to write the decoded data. It can be either the filename or the directory where the file should be written. If a directory, it should end with a backslash "\\".

After a decode Action , the FileName property contains the filename for the created file. If the file couldn't be created because of an illegal filename, examining FileName might give a hint about the reason of the failure.

FileName must be set to "" (empty string) after each decode operation since it contains the full specification of the file.

An error occurs if FileName is empty and the UUEncode Format and the EncodeToString Action are selected.

If you want to first check the uuencoded filename before creating it on disk, you may assign an illegal directory name to FileName (always use a closing backslash "\\" to denote it as directory), then catch the exception and check the filename appended to FileName .


setFileName

public void setFileName(java.lang.String fileName)
                 throws IPWorksException
The destination filename for the encoded data. When uuencoding, the FileName property contains the filename that is specified in the uuencoded data.

When decoding, if the value of the property is not empty, it shows the control where to write the decoded data. It can be either the filename or the directory where the file should be written. If a directory, it should end with a backslash "\\".

After a decode Action , the FileName property contains the filename for the created file. If the file couldn't be created because of an illegal filename, examining FileName might give a hint about the reason of the failure.

FileName must be set to "" (empty string) after each decode operation since it contains the full specification of the file.

An error occurs if FileName is empty and the UUEncode Format and the EncodeToString Action are selected.

If you want to first check the uuencoded filename before creating it on disk, you may assign an illegal directory name to FileName (always use a closing backslash "\\" to denote it as directory), then catch the exception and check the filename appended to FileName .


getFormat

public int getFormat()
Shows the type of encoding to be used. The following are the possible values for the Format property, and the corresponding descriptions:
fmtUUEncode (0)
The most popular standard. 3 Bytes are encoded into 4 readable characters. If multiple filenames are specified, then the extension ".uue" is used/expected.
fmtBASE64 (1)
Encoding format of MIME. Much like UUEncode but another subset of printable characters is used. If multiple filenames are specified, then the extension ".b64" is used/expected.
fmtQP (2)
Another MIME format coding only special characters. Mostly used if the text contains special accented characters. If multiple filenames are specified, then the extension ".q_p" is used/expected.
fmtURL (3)
Encoding of non-printable, 8-bit or unsafe characters as defined in RFC 1738. (No multiple filenames can be specified with this encoding.)


setFormat

public void setFormat(int format)
               throws IPWorksException
Shows the type of encoding to be used. The following are the possible values for the Format property, and the corresponding descriptions:
fmtUUEncode (0)
The most popular standard. 3 Bytes are encoded into 4 readable characters. If multiple filenames are specified, then the extension ".uue" is used/expected.
fmtBASE64 (1)
Encoding format of MIME. Much like UUEncode but another subset of printable characters is used. If multiple filenames are specified, then the extension ".b64" is used/expected.
fmtQP (2)
Another MIME format coding only special characters. Mostly used if the text contains special accented characters. If multiple filenames are specified, then the extension ".q_p" is used/expected.
fmtURL (3)
Encoding of non-printable, 8-bit or unsafe characters as defined in RFC 1738. (No multiple filenames can be specified with this encoding.)


isIntelliCode

public boolean isIntelliCode()
Controls whether NetCode should try to interpret several concatenated messages while uudecoding. If a file is uuencoded and split over several mail messages, NetCode will normally attempt to filter the opening and closing lines such as message headings and/or decode scripts which don't belong to the encoded data. You should set IntelliCode to False only in the improbable case that the data is decoded improperly.

IMPORTANT: The uuencoded messages should appear in the proper order. The control handles only the filtering of packing information and does no sorting.

The IntelliCode property applies only to the 'uuencoded' Format .


setIntelliCode

public void setIntelliCode(boolean intelliCode)
                    throws IPWorksException
Controls whether NetCode should try to interpret several concatenated messages while uudecoding. If a file is uuencoded and split over several mail messages, NetCode will normally attempt to filter the opening and closing lines such as message headings and/or decode scripts which don't belong to the encoded data. You should set IntelliCode to False only in the improbable case that the data is decoded improperly.

IMPORTANT: The uuencoded messages should appear in the proper order. The control handles only the filtering of packing information and does no sorting.

The IntelliCode property applies only to the 'uuencoded' Format .


getMaxFileSize

public int getMaxFileSize()
When decoding, controls whether encoded data should be split into several files and gives the maximum allowed size for these files. Some mailing systems require that the message size shouldn't exceed a certain size. Assigning a nonzero value to MaxFileSize makes the control split the encoded data into several files. FileCnt will contain the number of files created. Please refer to EncodedData for filename conventions.

IMPORTANT: if a non-zero value is assigned to MaxFileSize then a multiple filename should also be assigned to EncodedData (end with question marks "?") so that the control can expand the filenames.

Please refer to the Error Messages section for a complete list of possible errors.


setMaxFileSize

public void setMaxFileSize(int maxFileSize)
                    throws IPWorksException
When decoding, controls whether encoded data should be split into several files and gives the maximum allowed size for these files. Some mailing systems require that the message size shouldn't exceed a certain size. Assigning a nonzero value to MaxFileSize makes the control split the encoded data into several files. FileCnt will contain the number of files created. Please refer to EncodedData for filename conventions.

IMPORTANT: if a non-zero value is assigned to MaxFileSize then a multiple filename should also be assigned to EncodedData (end with question marks "?") so that the control can expand the filenames.

Please refer to the Error Messages section for a complete list of possible errors.


getMode

public java.lang.String getMode()
The UNIX-style filemode when uuencoding / uudecoding. The filemode is usually an octal number such as 755 or 600 which gives the protections of that file. If the file to uudecode is correctly read then Mode contains the protection string given in the uuencoded data.

Given for compatibility with other systems. Used only when Format is fmtUUE.


setMode

public void setMode(java.lang.String mode)
             throws IPWorksException
The UNIX-style filemode when uuencoding / uudecoding. The filemode is usually an octal number such as 755 or 600 which gives the protections of that file. If the file to uudecode is correctly read then Mode contains the protection string given in the uuencoded data.

Given for compatibility with other systems. Used only when Format is fmtUUE.


isOverwrite

public boolean isOverwrite()
Controls whether created file(s) should overwrite already existing file(s). Note that more than one file may be created during uuencoding.


setOverwrite

public void setOverwrite(boolean overwrite)
                  throws IPWorksException
Controls whether created file(s) should overwrite already existing file(s). Note that more than one file may be created during uuencoding.


getProgressStep

public int getProgressStep()
Controls the granularity at which the Progress event is fired. Values 0-100. If ProgressStep is not 0, the Progress event will be fired when 0%, n* ProgressStep and 100% of input data is read.

If ProgressStep is 0, the Progress event is disabled.


setProgressStep

public void setProgressStep(int progressStep)
                     throws IPWorksException
Controls the granularity at which the Progress event is fired. Values 0-100. If ProgressStep is not 0, the Progress event will be fired when 0%, n* ProgressStep and 100% of input data is read.

If ProgressStep is 0, the Progress event is disabled.


fireProgress

public void fireProgress(int percentDone)
Occurs when PercentDone of the input is read. (Called internally to dispatch the event.)
See Also:
NetcodeProgressEvent

decodeToFile

public void decodeToFile()
                  throws IPWorksException
Decode to file. Decode with the format given in Format . Data is read from the EncodedData file(s) and written in the filename specified in the encoded data.

When UUDecoding the created filename will by default be the one specified in the uuencoded data. DecodedData or, if DecodedData is empty, FileName can be used to override this value.

If the string terminates with a backslash "\\" it is interpreted as a directory in which to create decoded files. FileName contains the filename for the created file.

Calling this method is equivalent to setting the Action property to netcodeDecodeToFile .


decodeToString

public void decodeToString()
                    throws IPWorksException
Decode to string. Decode according to Format : The string EncodedData is encoded into DecodedData . FileName contains the filename contained in the uuencoded data.

Calling this method is equivalent to setting the Action property to netcodeDecodeToString .


encodeToFile

public void encodeToFile()
                  throws IPWorksException
Encode to file. Encode with the format given in Format . Data is read from the file DecodedData and is encoded in the file(s) EncodedData . When uuencoding, the uuencoded data contain as filename the value given in FileName or, if empty, the value of DecodedData .

While UUEncoding it is recommended to give the full file path in EncodedData and the filename in FileName .

The current version of NetCode creates no message headers. If a MIME standard encoding is used such as Base64 Encoding or Quoted Printable Encoding the user should fill the header values appropriately.

If MaxFileSize is set and the encoded data take more space than MaxFileSize , the data is split over several files. In this case, the user can specify more than one filename by passing them to EncodedData in the form name? . The filenames should exist as path\\file0.ext , path\\file1.ext ... Question marks "?" are expanded to numerals starting with 0. NetCode appends the extension ".uue", ".b16", or ".q_p" (depending on the value of Format ) to the filename.

Calling this method is equivalent to setting the Action property to netcodeEncodeToFile .


encodeToString

public void encodeToString()
                    throws IPWorksException
Encode to string. Encode according to Format : DecodedData is encoded into EncodedData . (the data is considered binary while uuencoding and Base64 Format s, and Text during QuotedPrintable ones.) When uuencoding the filename is taken from the FileName property.

Calling this method is equivalent to setting the Action property to netcodeEncodeToString .


addNetcodeEventListener

public void addNetcodeEventListener(NetcodeEventListener l)
                             throws java.util.TooManyListenersException

removeNetcodeEventListener

public void removeNetcodeEventListener(NetcodeEventListener l)

IP*Works!

Copyright (c) 2001 /n software inc. - All rights reserved.