Comments length?

When posting comments in an AIR help, there's a 500 character limit on those posts. Is there a way to increase/decrease this number?
I'm using RH 9 on a Win 7 64-bit system.

Sorry but the limit is whatever it is, no setting you can change.
See www.grainge.org for RoboHelp and Authoring tips
@petergrainge

Similar Messages

  • BPC 10.0 NW Comment Length

    Hi all,
    I'm going around in circles here and not finding the cause, so I'm hoping you'll be able to tell me what I'm missing!
    We're running BPC 10.0 NW SAPK-80102INCPMBPC and we have some templates that are set up to save more than 1000 characters in each saved Comment. I've created a new Environment and Model but every time I save Comments they are being restricted to 255 characters.
    At first I thought it was because I was creating the templates on Excel 2007, but now I'm using Excel 2010 and experiencing the same issue. I've started again creating a brand new template (to ensure that no restrictions are being carried over from a template created in an earlier version of Excel - just to be safe), but the Comments are only saving up to a maximum of 255 characters!
    One last thing. The template that does save over 1000 characters is in our Production system, but this is still just a development in our Development system.
    Is there a setting somewhere that I'm missing that will make this work correctlt for me in our Development system.
    Many thanks in advance.
    JohnK

    Hi,
    By default system allow you to key in comment length as 255 chars. You can change this length from Administration --> Models
    Hope it helps...
    regards,
    Raju

  • Comment length on blog

    I am working on iweb 08, is there a way to limit the length of the comments, when people add them to my blog?

    Hi
    Having the exact same problem with comments on Blog page - I recently updated iWeb with the software button and IWeb is now showing as .me - since then, the Blog has not been working well - if I visit my site with the .me address, Blog works fine, but when visiting my own domain name the Blog feature of comments is not working.....
    No idea how to solve this yet.....

  • Selection screen Comment Maximum length 79 ???

    Hi,
    I have a requirement to write down a report instructions on a report selection screen.
    Can we increase the comment length size?? it looks awkward because only half of my screen width is being filled and I have a requirement to write more than  400 characters.
    Are there any alternatives?
    Regards
    Vara

    Is this Still True, can't we put comment more than 79 characters in single line???
    Please respond if any body have any clue !!!
    Sas
    Is there any clue???
    Edited by: saslove sap on Mar 17, 2010 4:21 AM
    Edited by: saslove sap on Mar 17, 2010 5:40 AM
    Edited by: saslove sap on Mar 17, 2010 8:12 AM
    Edited by: saslove sap on Mar 17, 2010 8:21 AM
    Edited by: saslove sap on Mar 17, 2010 9:16 AM
    Edited by: saslove sap on Mar 17, 2010 10:35 AM
    Edited by: saslove sap on Mar 17, 2010 10:46 AM
    Edited by: saslove sap on Mar 17, 2010 11:47 AM
    Edited by: saslove sap on Mar 18, 2010 6:37 AM

  • How can i send an auto reply with form content to sender?

    Hai!
    I'm new to website building, but i already came a long way
    i made a form and i like to send a auto reply with the form content (if that isnt too difficult) to the person who filled it in.
    The form i made is in PHP (coding i copied partly from someone from the internet .)
    You can see the from at: http://vinddit.nl/vindditnu%20php%20version.php
    My PHP coding so far
    <?php
    // Set email variables
    $email_to = '[email protected]';
    $email_subject = 'Aanvraag - VINDDIT NU!';
    // Set required fields
    $required_fields = array('Voornaam','email','Achternaam','Plaats');
    // set error messages
    $error_messages = array(
              'Voornaam' => 'Vul hier uw voornaam in a.u.b.',
              'email' => 'Vul hier een geldig email adres in a.u.b.',
              'Achternaam' => 'Vul hier uw achternaam in a.u.b.',
              'Plaats' => 'Vul hier uw woonplaats in a.u.b.'
    // Set form status
    $form_complete = FALSE;
    // configure validation array
    $validation = array();
    // check form submittal
    if(!empty($_POST)) {
              // Sanitise POST array
              foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));
              // Loop into required fields and make sure they match our needs
              foreach($required_fields as $field) {
                        // the field has been submitted?
                        if(!array_key_exists($field, $_POST)) array_push($validation, $field);
                        // check there is information in the field?
                        if($_POST[$field] == '') array_push($validation, $field);
                        // validate the email address supplied
                        if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);
              // basic validation result
              if(count($validation) == 0) {
                        // Prepare our content string
                        $email_content = 'New Website Comment: ' . "\n\n";
                        // simple email content
                        foreach($_POST as $key => $value) {
                                  if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";
                        // if validation passed ok then send the email
                        mail($email_to, $email_subject, $email_content);
                        // Update form switch
                        $form_complete = TRUE;
    function validate_email_address($email = FALSE) {
              return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;
    function remove_email_injection($field = FALSE) {
       return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
              <title>Aanvraag formulier</title>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <link href="style.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
        <script type="text/javascript" src="validation/validation.js"></script>
              <script type="text/javascript">
    var nameError = '<?php echo $error_messages['fullname']; ?>';
                        var emailError = '<?php echo $error_messages['email']; ?>';
                        var commentError = '<?php echo $error_messages['comment']; ?>';
    function MM_preloadImages() { //v3.0
      var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
        var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
        if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
        </script>
    <style type="text/css">
    </style>
    </head>
    <body onload="MM_preloadImages('icons/x.png')">
    <p> </p>
    <p>
      <?php if($form_complete === FALSE): ?>
    </p>
        <form action="vindditnu php version.php" method="post" enctype="application/x-www-form-urlencoded" name="Form"  id="commentsform">
        <h1><img src="icons/vinddit3.gif" width="220" height="80" alt="logo" /></h1>
        <h1>Wat zoekt u?:</h1>
                     <table width="690" border="0">
            <tr>
              <td>In welke categorie zoekt u?*</td>
              <td colspan="3"><select name="Ophalen_verzenden" id="Ophalen_verzenden">
                <option selected="selected">Meubels </option>
                <option>Witgoed </option>
                <option>Woon accesoires </option>
                <option>Kleding </option>
                <option>Schoenen </option>
                <option>Mode accesoires </option>
                <option>Speelgoed </option>
                <option>Boeken, tijdschriften, papierwaren </option>
                <option>Overig </option>
              </select></td>
            </tr>
            <tr>
              <td>Kleur:* </td>
              <td colspan="3"><select name="kleuren" id="kleuren">
                <option>Blauw</option>
                <option>Rood</option>
                <option>WIt</option>
                <option>Zwart</option>
                <option>Beige</option>
                <option>Bruin</option>
                <option>Geel</option>
                <option>Oranje</option>
                <option>Rood</option>
                <option>Metallic (Bijv. Zilver/Goud/Brons/Koper</option>
                <option>Meerkleurig</option>
                <option selected="selected">Overig/ N.v.t</option>
              </select></td>
            </tr>
            <tr>
              <td>Merk: </td>
              <td colspan="3"><input name="Merk" type="text" id="Merk5" value="<?php echo isset($_POST['Merk'])? $_POST['Merk'] : ''; ?>" />
                <?php if(in_array('Merk', $validation)): ?>
                <span class="error"><?php echo $error_messages['Merk']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td>Type/Model:</td>
              <td colspan="3"><input type="text" name="type" id="type" value="<?php echo isset($_POST['type'])? $_POST['type'] : ''; ?>" />
                <?php if(in_array('type', $validation)): ?>
                <span class="error"><?php echo $error_messages['type']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td>Materiaal: </td>
              <td colspan="3"><input name="Materiaal" type="text" id="Materiaal" value="<?php echo isset($_POST['Materiaal'])? $_POST['Materiaal'] : ''; ?>" />
                <?php if(in_array('Materiaal', $validation)): ?>
                <span class="error"><?php echo $error_messages['Materiaal']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td>Maat: </td>
              <td colspan="3"><input type="text" name="Maat" id="Maat" value="<?php echo isset($_POST['Maat'])? $_POST['Maat'] : ''; ?>" />
                <?php if(in_array('Maat', $validation)): ?>
                <span class="error"><?php echo $error_messages['Maat']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td>Conditie*:</td>
              <td colspan="3"><select name="conditie" id="conditie" >
                <option>Zo goed als nieuw</option>
                <option>Nieuw</option>
                <option>Bebruikt</option>
                <option selected="selected">Geen voorkeur </option>
              </select></td>
            </tr>
            <tr>
              <td>Ophalen/Verzenden:*</td>
              <td colspan="3"><select name="ophalen" id="ophalen">
                <option>Ophalen</option>
                <option>Verzenden</option>
                <option>N.v.t</option>
                <option>Geen voorkeur </option>
              </select></td>
            </tr>
            <tr>
              <td>Prijs Min:</td>
              <td><input name="prijsmin" type="text" id="prijsmin" size="10" value="<?php echo isset($_POST['prijsmin'])? $_POST['prijsmin'] : ''; ?>" />
                <?php if(in_array('prijsmin', $validation)): ?>
                <span class="error"><?php echo $error_messages['prijsmin']; ?></span>
                <?php endif; ?></td>
              <td>Prijs Max:</td>
              <td><input name="Prijs" type="text" id="Prijs" size="10" value="<?php echo isset($_POST['Prijs'])? $_POST['Prijs'] : ''; ?>" />
                <?php if(in_array('Prijs', $validation)): ?>
                <span class="error"><?php echo $error_messages['Prijs']; ?></span>
                <?php endif; ?></td>
            </tr>
          </table>
          <h1>Opmerkingen:</h1>
          <table width="690" border="0">
            <tr>
              <td height="25">Opmerkingen:</td>
              <td rowspan="2"><textarea name="Opmerkingen" cols="67" rows="10" id="Opmerkingen"><?php echo isset($_POST['Opmerkingen'])? $_POST['Opmerkingen'] : ''; ?></textarea>
                <?php if(in_array('Opmerkingen', $validation)): ?>
                <span class="error"><?php echo $error_messages['Opmerkingen']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td height="78"> </td>
            </tr>
          </table>
          <h1>Uw Gegevens:</h1>
          <table width="690" border="0">
            <tr>
              <td>Voornaam/Voorletters*:</td>
              <td><input type="text" name="Voornaam" id="Voornaam" class='invul' value="<?php echo isset($_POST['Voornaam'])? $_POST['Voornaam'] : ''; ?>" />
                <?php if(in_array('Voornaam', $validation)): ?>
                <span class="error"><?php echo $error_messages['Voornaam']; ?></span>
                <?php endif; ?></td>
              <td>Achternaam:* </td>
              <td><input type="text" name="Achternaam" id="Achternaam" class='invul' value="<?php echo isset($_POST['Achternaam'])? $_POST['Achternaam'] : ''; ?>" />
                <?php if(in_array('Achternaam', $validation)): ?>
                <span class="error"><?php echo $error_messages['Achternaam']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td>Straatnaam:</td>
              <td><input type="text" name="Straat" id="Straat" class='invul' value="<?php echo isset($_POST['Straat'])? $_POST['Straat'] : ''; ?>" />
                <?php if(in_array('Straat', $validation)): ?>
                <span class="error"><?php echo $error_messages['Straat']; ?></span>
                <?php endif; ?></td>
              <td>Huisnummer:</td>
              <td><input name="Huisnummer" type="text" id="Huisnummer" class='invul' size="10" value="<?php echo isset($_POST['Huisnummer'])? $_POST['Huisnummer'] : ''; ?>" />
                <?php if(in_array('Huisnummer', $validation)): ?>
                <span class="error"><?php echo $error_messages['Huisnummer']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td>Postcode:</td>
              <td><input type="text" name="Postcode" id="Postcode" class='invul' value="<?php echo isset($_POST['Postcode'])? $_POST['Postcode'] : ''; ?>" />
                <?php if(in_array('Postcode', $validation)): ?>
                <span class="error"><?php echo $error_messages['Postcode']; ?></span>
                <?php endif; ?></td>
              <td>Plaats:* </td>
              <td><input type="text" name="Plaats" id="Plaats" class='invul' value="<?php echo isset($_POST['Plaats'])? $_POST['Plaats'] : ''; ?>" />
                <?php if(in_array('Plaats', $validation)): ?>
                <span class="error"><?php echo $error_messages['Plaats']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td>Email Adres:*</td>
              <td colspan="3"><input type="text" name="email" id="email" class='invul' value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" />
                <?php if(in_array('email', $validation)): ?>
                <span class="error"><?php echo $error_messages['email']; ?></span>
                <?php endif; ?></td>
            </tr>
            <tr>
              <td>Telefoonnummer:</td>
              <td colspan="3"><input name="Telefoon" type="text" id="Telefoon" class='invul' value="<?php echo isset($_POST['Telefoon'])? $_POST['Telefoon'] : ''; ?>" />
                <?php if(in_array('Telefoon', $validation)): ?>
                <span class="error"><?php echo $error_messages['Telefoon']; ?></span>
                <?php endif; ?></td>
            </tr>
          </table>
          <p>
            <label for="Straat"></label>
            <label for="Huisnummer"><br />
            </label>
            <input type="submit" name="Submit" id="Submit" value="Verstuur" />
                   <input type="reset" name="Reset" id="Reset" value="Wissen" />
          </p>
        </form>
        <?php else: ?>
        <div class="bedankt">
          <p>Bedankt voor uw aanvraag!</p>
          <p>Wij zullen uw aanvraag zo spoedig mogelijk behandelen. Meestal duurt dit 2 a 3 werkdagen.</p>
          <p><img src="icons/vinddit3.gif" width="220" height="80" alt="logo" /></p>
    </div>
        <p>
          <script type='text/javascript'>
    setTimeout("ourRedirect()", 5000)
    function ourRedirect() {
          </script>
          <?php endif; ?>
    </body>
    </html>
    and .JS
    window.addEvent('domready', function() {
              // Get the form
              var form = $('comments_form');
              //  if the form is found...
              if (form) {
                        // obtain error fields
                        var name = $('fullname');
                        var email = $('email');
                        var comment = $('comment');
                        // Set the default status
                        var isValid = true;
                        // input error function for the error messages
                        var addError = function (field, msg) {
                                  field.addClass('error'); // Add error class to field
                                  var error = field.getParent().getElement('span') || new Element('span', {'class': 'error'}); // add error message if not already placed
                                  error.set('text', msg); // error text msg
                                  error.inject(field, 'after'); // Insert error message after field
      // detach error function used to delete any error messages and remove the error class
                        var removeError = function (field) {
                                  field.removeClass('error'); // Remove error class from form fields
                                  var error = field.getParent().getElement('span'); // find any existing error messages
      // destroy if error message
                                  if (error) {
                                            error.destroy();
    //  insert submit form event
                        form.addEvent('submit', function (e) {
                                  // Test name length
                                  if (name.get('value').length === 0) {
                                            isValid = false;
                                            addError(name, nameError);
                                  } else {
                                            isValid = true;
                                            removeError(name);
    // check email length
                                  if (email.get('value').length === 0) {
                                            isValid = false;
                                            addError(email, emailError);
                                  // check email validity
                                  } else if (!email.get('value').test(/^([a-zA-Z0-9\+_\-]+)(\.[a-zA-Z0-9\+_\-]+)*@([a-zA-Z0-9\-]+\.)+ [a-zA-Z]{2,6}$/)) {
                                            isValid = false;
                                            addError(email, emailError);
                                  } else {
                                            isValid = true;
                                            removeError(email);
                    // check comment length
                                  if (comment.get('value').length === 0) {
                                            isValid = false;
                                            addError(comment, commentError);
                                  } else {
                                            isValid = true;
                                            removeError(comment);
                                  // If form invalid then stop event happening
                                  if (!isValid) {
                                            e.stop();

    lisavs12686 wrote:
    Whould it also be possible to send the sender the submited data (looking like the filled in form or so)?
    not really nessecary but whould be a nice  jextra
    You can but you would need to send it as an html email which is much more complicated.
    What you would do is build a page/table construction like below. You would need to use the php variables to echo out the information in the <td></td> cells (example below).
    $reply = $_POST['email'];
    $from = '[email protected]';
    $replysubject = "Auto-Reply: Website Name";
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= "From: $from\r\nReply-to: $reply";
    $replymessage = '
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Comments from Website</title>
    </head>
    <body>
    <table>
    <tr>
    <td bgcolor="#ffffff" style="font-family: verdana, arial, helvetica, sans-serif; font-size: 13px; padding: 10px 15px;">Name: </strong>'.$name.'
    </td>
    </tr>
    </table>
    </body>
    </html>';
    mail($reply, $replysubject, $replymessage, $headers);

  • Why won't my unzipped and rezipped IDML file open in InDesign?

    I'm a developer working on an IDML based project.
    My application opens an IDML file, inflates the contents and (for the moment, without making any changes), deflates them again.
    The result is a file which:
    a) Opens fine in any zip application
    b) My code can then reopen without problems.
    InDesign, however, throws the following error:
    "Cannot open the file "filename.idml". Adobe InDesign may not support the file format, a plug-in that supports the file format may be miussing, or the file may be open in another application."
    I have verified that the file is not open in another app, and that no plug ins are involved.
    InDesign will open the original IDML file that it exported, so there's no general error.
    I assume the issue is with the zip container not being UCF compliant, and I'm trying to diagnose what the problem might be.
    My question(s):
    Has anyone been through this and do they have any suggestions or guidance?
    Is there any way I can get InDesign to tell me in more detail why it cannot open the file?
    What are the most likely issues with the container?
    I have inspected both the original file and the output file using Winzip, and I append the results of a detailed diagnostic on each below. The only difference I can see is that some files in the original are not compressed (they are simply stored in the zip container), but the UCF specification seems to suggest that a container can contain either compressed or normal files, so I don't see why this should be a problem. Would this cause InDesign to have a problem?
    Many thanks in advance for any assistance. Zip file diagnostics follow.
    JcFx Eu.
    DIAGNOSTICS FOR THE ORIGINAL IDML FILE:
    Testing ...
    Current Location part 1 offset 35496
    Archive: ORIGINAL.zip   35518 bytes   2010-06-29 19:16:58
    End central directory record PK0506 (4+18)
    ==========================================
        current  location of end-of-central-dir record: 35496 (0x00008aa8) bytes
        expected location of end-of-central-dir record: 35496 (0x00008aa8) bytes
          based on the size of the central directory of
          990 and its relative offset of 34506 bytes
        part number of this part (0000):                1
        part number of start of central dir (0000):     1
        number of entries in central dir in this part:  15
        total number of entries in central dir:         15
        size of central dir:                            990 (0x000003de) bytes
        relative offset of central dir:                 34506 (0x000086ca) bytes
        zipfile comment length:                         0
    Current Location part 1 offset 34506
    Central directory entry PK0102 (4+42): #1
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                0 (0x00000000) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0800) (bit 15..0):  0000.1000 0000.0000
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (00):                        none (stored)
        file last modified on (0x00003cdd 0x00009a1c):  2010-06-29 19:16:56
        32-bit CRC value:                               0x898f76cb
        compressed size:                                43 bytes
        uncompressed size:                              43 bytes
        length of filename:                             8 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 34552
        filename:mimetype
    Current Location part 1 offset 34560
    Central directory entry PK0102 (4+42): #2
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                81 (0x00000051) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1c):  2010-06-29 19:16:56
        32-bit CRC value:                               0x48e193fb
        compressed size:                                2516 bytes
        uncompressed size:                              14146 bytes
        length of filename:                             13 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 34606
        filename:designmap.xml
    Current Location part 1 offset 34619
    Central directory entry PK0102 (4+42): #3
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                2640 (0x00000a50) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0xbe470667
        compressed size:                                167 bytes
        uncompressed size:                              253 bytes
        length of filename:                             22 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 34665
        filename:META-INF\container.xml
    Current Location part 1 offset 34687
    Central directory entry PK0102 (4+42): #4
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                2859 (0x00000b2b) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0xa9a4d00e
        compressed size:                                6047 bytes
        uncompressed size:                              29065 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 34733
        filename:META-INF\metadata.xml
    Current Location part 1 offset 34754
    Central directory entry PK0102 (4+42): #5
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                8957 (0x000022fd) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x7557d85e
        compressed size:                                1155 bytes
        uncompressed size:                              7428 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 34800
        filename:Resources\Graphic.xml
    Current Location part 1 offset 34821
    Central directory entry PK0102 (4+42): #6
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                10163 (0x000027b3) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0xf43a42fe
        compressed size:                                3449 bytes
        uncompressed size:                              19673 bytes
        length of filename:                             19 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 34867
        filename:Resources\Fonts.xml
    Current Location part 1 offset 34886
    Central directory entry PK0102 (4+42): #7
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                13661 (0x0000355d) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x4accb4c4
        compressed size:                                4627 bytes
        uncompressed size:                              29487 bytes
        length of filename:                             20 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 34932
        filename:Resources\Styles.xml
    Current Location part 1 offset 34952
    Central directory entry PK0102 (4+42): #8
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                18338 (0x000047a2) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0xd75ae504
        compressed size:                                10962 bytes
        uncompressed size:                              69779 bytes
        length of filename:                             25 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 34998
        filename:Resources\Preferences.xml
    Current Location part 1 offset 35023
    Central directory entry PK0102 (4+42): #9
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                29355 (0x000072ab) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x65ae6db3
        compressed size:                                218 bytes
        uncompressed size:                              302 bytes
        length of filename:                             12 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 35069
        filename:XML\Tags.xml
    Current Location part 1 offset 35081
    Central directory entry PK0102 (4+42): #10
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                29615 (0x000073af) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x037dee40
        compressed size:                                692 bytes
        uncompressed size:                              2328 bytes
        length of filename:                             34 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 35127
        filename:MasterSpreads\MasterSpread_ubc.xml
    Current Location part 1 offset 35161
    Central directory entry PK0102 (4+42): #11
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                30371 (0x000076a3) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x43b1858a
        compressed size:                                1573 bytes
        uncompressed size:                              7799 bytes
        length of filename:                             22 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 35207
        filename:Spreads\Spread_ub5.xml
    Current Location part 1 offset 35229
    Central directory entry PK0102 (4+42): #12
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                31996 (0x00007cfc) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x0bc7a874
        compressed size:                                342 bytes
        uncompressed size:                              606 bytes
        length of filename:                             20 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 35275
        filename:XML\BackingStory.xml
    Current Location part 1 offset 35295
    Central directory entry PK0102 (4+42): #13
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                32388 (0x00007e84) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x0c652477
        compressed size:                                685 bytes
        uncompressed size:                              3219 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 35341
        filename:Stories\Story_uff.xml
    Current Location part 1 offset 35362
    Central directory entry PK0102 (4+42): #14
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                33124 (0x00008164) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x59a2cf03
        compressed size:                                646 bytes
        uncompressed size:                              3041 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 35408
        filename:Stories\Story_ue5.xml
    Current Location part 1 offset 35429
    Central directory entry PK0102 (4+42): #15
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                33821 (0x0000841d) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x6fc8a48f
        compressed size:                                634 bytes
        uncompressed size:                              2935 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 35475
        filename:Stories\Story_ucb.xml
    Current Location part 1 offset 0
    Local directory entry PK0304 (4+26): #1
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0800) (bit 15..0):  0000.1000 0000.0000
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (00):                        none (stored)
        file last modified on (0x00003cdd 0x00009a1c):  2010-06-29 19:16:56
        32-bit CRC value:                               0x898f76cb
        compressed size:                                43 bytes
        uncompressed size:                              43 bytes
        length of filename:                             8 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 30
        filename:mimetype
    Current Location part 1 offset 38
    Testing mimetype                 OK
    Current Location part 1 offset 81
    Local directory entry PK0304 (4+26): #2
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1c):  2010-06-29 19:16:56
        32-bit CRC value:                               0x48e193fb
        compressed size:                                2516 bytes
        uncompressed size:                              14146 bytes
        length of filename:                             13 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 111
        filename:designmap.xml
    Current Location part 1 offset 124
    Testing designmap.xml            OK
    Current Location part 1 offset 2640
    Local directory entry PK0304 (4+26): #3
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0xbe470667
        compressed size:                                167 bytes
        uncompressed size:                              253 bytes
        length of filename:                             22 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 2670
        filename:META-INF\container.xml
    Current Location part 1 offset 2692
    Testing META-INF\container.xml   OK
    Current Location part 1 offset 2859
    Local directory entry PK0304 (4+26): #4
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0xa9a4d00e
        compressed size:                                6047 bytes
        uncompressed size:                              29065 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 2889
        filename:META-INF\metadata.xml
    Current Location part 1 offset 2910
    Testing META-INF\metadata.xml    OK
    Current Location part 1 offset 8957
    Local directory entry PK0304 (4+26): #5
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x7557d85e
        compressed size:                                1155 bytes
        uncompressed size:                              7428 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 8987
        filename:Resources\Graphic.xml
    Current Location part 1 offset 9008
    Testing Resources\Graphic.xml    OK
    Current Location part 1 offset 10163
    Local directory entry PK0304 (4+26): #6
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0xf43a42fe
        compressed size:                                3449 bytes
        uncompressed size:                              19673 bytes
        length of filename:                             19 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 10193
        filename:Resources\Fonts.xml
    Current Location part 1 offset 10212
    Testing Resources\Fonts.xml      OK
    Current Location part 1 offset 13661
    Local directory entry PK0304 (4+26): #7
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x4accb4c4
        compressed size:                                4627 bytes
        uncompressed size:                              29487 bytes
        length of filename:                             20 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 13691
        filename:Resources\Styles.xml
    Current Location part 1 offset 13711
    Testing Resources\Styles.xml     OK
    Current Location part 1 offset 18338
    Local directory entry PK0304 (4+26): #8
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0xd75ae504
        compressed size:                                10962 bytes
        uncompressed size:                              69779 bytes
        length of filename:                             25 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 18368
        filename:Resources\Preferences.xml
    Current Location part 1 offset 18393
    Testing Resources\Preferences.xml   OK
    Current Location part 1 offset 29355
    Local directory entry PK0304 (4+26): #9
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x65ae6db3
        compressed size:                                218 bytes
        uncompressed size:                              302 bytes
        length of filename:                             12 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 29385
        filename:XML\Tags.xml
    Current Location part 1 offset 29397
    Testing XML\Tags.xml             OK
    Current Location part 1 offset 29615
    Local directory entry PK0304 (4+26): #10
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x037dee40
        compressed size:                                692 bytes
        uncompressed size:                              2328 bytes
        length of filename:                             34 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 29645
        filename:MasterSpreads\MasterSpread_ubc.xml
    Current Location part 1 offset 29679
    Testing MasterSpreads\MasterSpread_ubc.xml   OK
    Current Location part 1 offset 30371
    Local directory entry PK0304 (4+26): #11
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x43b1858a
        compressed size:                                1573 bytes
        uncompressed size:                              7799 bytes
        length of filename:                             22 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 30401
        filename:Spreads\Spread_ub5.xml
    Current Location part 1 offset 30423
    Testing Spreads\Spread_ub5.xml   OK
    Current Location part 1 offset 31996
    Local directory entry PK0304 (4+26): #12
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x0bc7a874
        compressed size:                                342 bytes
        uncompressed size:                              606 bytes
        length of filename:                             20 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 32026
        filename:XML\BackingStory.xml
    Current Location part 1 offset 32046
    Testing XML\BackingStory.xml     OK
    Current Location part 1 offset 32388
    Local directory entry PK0304 (4+26): #13
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x0c652477
        compressed size:                                685 bytes
        uncompressed size:                              3219 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 32418
        filename:Stories\Story_uff.xml
    Current Location part 1 offset 32439
    Testing Stories\Story_uff.xml    OK
    Current Location part 1 offset 33124
    Local directory entry PK0304 (4+26): #14
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x59a2cf03
        compressed size:                                646 bytes
        uncompressed size:                              3041 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 33154
        filename:Stories\Story_ue5.xml
    Current Location part 1 offset 33175
    Testing Stories\Story_ue5.xml    OK
    Current Location part 1 offset 33821
    Local directory entry PK0304 (4+26): #15
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0802) (bit 15..0):  0000.1000 0000.0010
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                no
        compression method (08):                        deflated
          compression sub-type (deflation):             maximum
        file last modified on (0x00003cdd 0x00009a1d):  2010-06-29 19:16:58
        32-bit CRC value:                               0x6fc8a48f
        compressed size:                                634 bytes
        uncompressed size:                              2935 bytes
        length of filename:                             21 characters
        length of extra field:                          0 bytes
    Current Location part 1 offset 33851
        filename:Stories\Story_ucb.xml
    Current Location part 1 offset 33872
    Testing Stories\Story_ucb.xml    OK
    No errors detected in compressed data of ORIGINAL.zip.
    DIAGNOSTICS FOR THE REZIPPED IDML FILE:
    Testing ...
    Current Location part 1 offset 34822
    Archive: OUTPUT.zip   34844 bytes   2010-07-21 17:48:46
    End central directory record PK0506 (4+18)
    ==========================================
        current  location of end-of-central-dir record: 34822 (0x00008806) bytes
        expected location of end-of-central-dir record: 34822 (0x00008806) bytes
          based on the size of the central directory of
          990 and its relative offset of 33832 bytes
        part number of this part (0000):                1
        part number of start of central dir (0000):     1
        number of entries in central dir in this part:  15
        total number of entries in central dir:         15
        size of central dir:                            990 (0x000003de) bytes
        relative offset of central dir:                 33832 (0x00008428) bytes
        zipfile comment length:                         0
    Current Location part 1 offset 33832
    Central directory entry PK0102 (4+42): #1
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                0 (0x00000000) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0008) (bit 15..0):  0000.0000 0000.1000
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                yes
        compression method (08):                        deflated
          compression sub-type (deflation):             normal
        file last modified on (0x00003ce3 0x00008e13):  2010-07-03 17:48:38
        32-bit CRC value:                               0x898f76cb
        compressed size:                                44 bytes
        uncompressed size:                              43 bytes
        length of filename:                             8 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 33878
        filename:mimetype
    Current Location part 1 offset 33886
    Central directory entry PK0102 (4+42): #2
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                98 (0x00000062) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0008) (bit 15..0):  0000.0000 0000.1000
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                yes
        compression method (08):                        deflated
          compression sub-type (deflation):             normal
        file last modified on (0x00003ce3 0x00008e13):  2010-07-03 17:48:38
        32-bit CRC value:                               0x65263983
        compressed size:                                2412 bytes
        uncompressed size:                              13985 bytes
        length of filename:                             13 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 33932
        filename:designmap.xml
    Current Location part 1 offset 33945
    Central directory entry PK0102 (4+42): #3
    ======================================
        part number in which file begins (0000):        1
        relative offset of local header:                2569 (0x00000a09) bytes
        version made by operating system (00):          MS-DOS, OS/2, NT FAT
        version made by zip software (20):              2.0
        operat. system version needed to extract (00):  MS-DOS, OS/2, NT FAT
        unzip software version needed to extract (20):  2.0
        general purpose bit flag (0x0008) (bit 15..0):  0000.0000 0000.1000
          file security status  (bit 0):                not encrypted
          extended local header (bit 3):                yes
        compression method (08):                        deflated
          compression sub-type (deflation):             normal
        file last modified on (0x00003ce3 0x00008e13):  2010-07-03 17:48:38
        32-bit CRC value:                               0x817f37ea
        compressed size:                                132 bytes
        uncompressed size:                              196 bytes
        length of filename:                             22 characters
        length of extra field:                          0 bytes
        length of file comment:                         0 characters
        internal file attributes:                       0x0000
          apparent file type:                           binary
        external file attributes:                       0x00000000
          non-MSDOS external file attributes:           0x000000
          MS-DOS file attributes (0x00):                none
    Current Location part 1 offset 33991
        filename:META-INF\container.xml
    Current Location part 1 offset 34013
    Central directory entry PK0102 (4+42): #4
    ======================================
        part number in which file begins (0000):        1

    How are you zipping it?
    In needs to be a "clean" zip...
    Also, take a look at app.packageUCF() and app.unpackageUCF()...
    Harbs

  • Unzip a folder using pl/sql

    Hi All,
    I am creating zip folder using oracle pl/sql. Now i want to unzip the same folder for taking out the compressed file.
    Is it possible to unzip the folder in oracle pl/sql.
    Thanks in Advance.
    Cheers,
    Shan

    Here's the code
    Anton
    CREATE OR REPLACE package as_zip
    is
      type file_list is table of clob;
      function get_file_list(
        p_dir in varchar2
      , p_zip_file in varchar2
      , p_encoding in varchar2 := null
        return file_list;
      function get_file_list(
        p_zipped_blob in blob
      , p_encoding in varchar2 := null /* Use CP850 for zip files created with a German Winzip to see umlauts, etc */
        return file_list;
      function get_file(
        p_dir in varchar2
      , p_zip_file in varchar2
      , p_file_name in varchar2
      , p_encoding in varchar2 := null
        return blob;
      function get_file(
        p_zipped_blob in blob
      , p_file_name in varchar2
      , p_encoding in varchar2 := null
        return blob;
      procedure add1file(
        p_zipped_blob in out blob
      , p_name in varchar2
      , p_content in blob
      procedure finish_zip(
        p_zipped_blob in out blob
      procedure save_zip(
        p_zipped_blob in blob
      , p_dir in varchar2 := 'MY_DIR'
      , p_filename in varchar2 := 'my.zip'
    declare
      g_zipped_blob blob;
    begin
      as_zip.add1file( g_zipped_blob, 'test1.txt', utl_raw.cast_to_raw( 'Dit is de laatste test! Waarom wordt dit dan niet gecomprimeerd?' ) );
      as_zip.add1file( g_zipped_blob, 'test1234.txt', utl_raw.cast_to_raw( 'En hier staat wat anders' ) );
      as_zip.finish_zip( g_zipped_blob );
      as_zip.save_zip( g_zipped_blob, 'MY_DIR', 'my.zip' );
    end;
    declare
      t_dir varchar2(100) := 'MY_DIR';
      t_zip varchar2(100) := 'my.zip';
      zip_files as_zip.file_list;
    begin
      zip_files  := as_zip.get_file_list( t_dir, t_zip );
      for i in zip_files.first() .. zip_files.last
      loop
        dbms_output.put_line( zip_files( i ) );
        dbms_output.put_line( utl_raw.cast_to_varchar2( as_zip.get_file( t_dir, t_zip, zip_files( i ) ) ) );
      end loop;
    end;
    end;
    CREATE OR REPLACE package body as_zip
    is
      function raw2num(
        p_value in raw
        return number
      is
      begin                                               -- note: FFFFFFFF => -1
        return utl_raw.cast_to_binary_integer( p_value
                                             , utl_raw.little_endian
      end;
      function file2blob(
        p_dir in varchar2
      , p_file_name in varchar2
        return blob
      is
        file_lob bfile;
        file_blob blob;
      begin
        file_lob := bfilename( p_dir
                             , p_file_name
        dbms_lob.open( file_lob
                     , dbms_lob.file_readonly
        dbms_lob.createtemporary( file_blob
                                , true
        dbms_lob.loadfromfile( file_blob
                             , file_lob
                             , dbms_lob.lobmaxsize
        dbms_lob.close( file_lob );
        return file_blob;
      exception
        when others
        then
          if dbms_lob.isopen( file_lob ) = 1
          then
            dbms_lob.close( file_lob );
          end if;
          if dbms_lob.istemporary( file_blob ) = 1
          then
            dbms_lob.freetemporary( file_blob );
          end if;
          raise;
      end;
      function raw2varchar2(
        p_raw in raw
      , p_encoding in varchar2
        return varchar2
      is
      begin
        return nvl
                ( utl_i18n.raw_to_char( p_raw
                                      , p_encoding
                , utl_i18n.raw_to_char
                                ( p_raw
                                , utl_i18n.map_charset( p_encoding
                                                      , utl_i18n.generic_context
                                                      , utl_i18n.iana_to_oracle
      end;
      function get_file_list(
        p_dir in varchar2
      , p_zip_file in varchar2
      , p_encoding in varchar2 := null
        return file_list
      is
      begin
        return get_file_list( file2blob( p_dir
                                       , p_zip_file
                            , p_encoding
      end;
      function get_file_list(
        p_zipped_blob in blob
      , p_encoding in varchar2 := null
        return file_list
      is
        t_ind integer;
        t_hd_ind integer;
        t_rv file_list;
      begin
        t_ind := dbms_lob.getlength( p_zipped_blob ) - 21;
        loop
          exit when dbms_lob.substr( p_zipped_blob
                                   , 4
                                   , t_ind
                                   ) = hextoraw( '504B0506' )
                or t_ind < 1;
          t_ind := t_ind - 1;
        end loop;
        if t_ind <= 0
        then
          return null;
        end if;
        t_hd_ind := raw2num( dbms_lob.substr( p_zipped_blob
                                            , 4
                                            , t_ind + 16
                                            ) ) + 1;
        t_rv := file_list( );
        t_rv.extend( raw2num( dbms_lob.substr( p_zipped_blob
                                             , 2
                                             , t_ind + 10
        for i in 1 .. raw2num( dbms_lob.substr( p_zipped_blob
                                              , 2
                                              , t_ind + 8
        loop
          t_rv( i ) :=
            raw2varchar2
                 ( dbms_lob.substr( p_zipped_blob
                                  , raw2num( dbms_lob.substr( p_zipped_blob
                                                            , 2
                                                            , t_hd_ind + 28
                                  , t_hd_ind + 46
                 , p_encoding
          t_hd_ind :=
              t_hd_ind
            + 46
            + raw2num( dbms_lob.substr( p_zipped_blob
                                      , 2
                                      , t_hd_ind + 28
            + raw2num( dbms_lob.substr( p_zipped_blob
                                      , 2
                                      , t_hd_ind + 30
            + raw2num( dbms_lob.substr( p_zipped_blob
                                      , 2
                                      , t_hd_ind + 32
        end loop;
        return t_rv;
      end;
      function get_file(
        p_dir in varchar2
      , p_zip_file in varchar2
      , p_file_name in varchar2
      , p_encoding in varchar2 := null
        return blob
      is
      begin
        return get_file( file2blob( p_dir
                                  , p_zip_file
                       , p_file_name
                       , p_encoding
      end;
      function get_file(
        p_zipped_blob in blob
      , p_file_name in varchar2
      , p_encoding in varchar2 := null
        return blob
      is
        t_tmp blob;
        t_ind integer;
        t_hd_ind integer;
        t_fl_ind integer;
      begin
        t_ind := dbms_lob.getlength( p_zipped_blob ) - 21;
        loop
          exit when dbms_lob.substr( p_zipped_blob
                                   , 4
                                   , t_ind
                                   ) = hextoraw( '504B0506' )
                or t_ind < 1;
          t_ind := t_ind - 1;
        end loop;
        if t_ind <= 0
        then
          return null;
        end if;
        t_hd_ind := raw2num( dbms_lob.substr( p_zipped_blob
                                            , 4
                                            , t_ind + 16
                                            ) ) + 1;
        for i in 1 .. raw2num( dbms_lob.substr( p_zipped_blob
                                              , 2
                                              , t_ind + 8
        loop
          if p_file_name =
               raw2varchar2
                 ( dbms_lob.substr( p_zipped_blob
                                  , raw2num( dbms_lob.substr( p_zipped_blob
                                                            , 2
                                                            , t_hd_ind + 28
                                  , t_hd_ind + 46
                 , p_encoding
          then
            if dbms_lob.substr( p_zipped_blob
                              , 2
                              , t_hd_ind + 10
                              ) = hextoraw( '0800' )                -- deflate
            then
              t_fl_ind :=
                    raw2num( dbms_lob.substr( p_zipped_blob
                                            , 4
                                            , t_hd_ind + 42
              t_tmp := hextoraw( '1F8B0800000000000003' );          -- gzip header
              dbms_lob.copy( t_tmp
                           , p_zipped_blob
                           , raw2num( dbms_lob.substr( p_zipped_blob
                                                     , 4
                                                     , t_fl_ind + 19
                           , 11
                           ,   t_fl_ind
                             + 31
                             + raw2num( dbms_lob.substr( p_zipped_blob
                                                       , 2
                                                       , t_fl_ind + 27
                             + raw2num( dbms_lob.substr( p_zipped_blob
                                                       , 2
                                                       , t_fl_ind + 29
              dbms_lob.append( t_tmp
                             , dbms_lob.substr( p_zipped_blob
                                              , 4
                                              , t_fl_ind + 15
              dbms_lob.append( t_tmp
                             , dbms_lob.substr( p_zipped_blob, 4, t_fl_ind + 23 )
              return utl_compress.lz_uncompress( t_tmp );
            end if;
            if dbms_lob.substr( p_zipped_blob
                              , 2
                              , t_hd_ind + 10
                              ) =
                          hextoraw( '0000' )
                                            -- The file is stored (no compression)
            then
              t_fl_ind :=
                    raw2num( dbms_lob.substr( p_zipped_blob
                                            , 4
                                            , t_hd_ind + 42
              return dbms_lob.substr( p_zipped_blob
                                    , raw2num( dbms_lob.substr( p_zipped_blob
                                                              , 4
                                                              , t_fl_ind + 19
                                    ,   t_fl_ind
                                      + 31
                                      + raw2num( dbms_lob.substr( p_zipped_blob
                                                                , 2
                                                                , t_fl_ind + 27
                                      + raw2num( dbms_lob.substr( p_zipped_blob
                                                                , 2
                                                                , t_fl_ind + 29
            end if;
          end if;
          t_hd_ind :=
              t_hd_ind
            + 46
            + raw2num( dbms_lob.substr( p_zipped_blob
                                      , 2
                                      , t_hd_ind + 28
            + raw2num( dbms_lob.substr( p_zipped_blob
                                      , 2
                                      , t_hd_ind + 30
            + raw2num( dbms_lob.substr( p_zipped_blob
                                      , 2
                                      , t_hd_ind + 32
        end loop;
        return null;
      end;
      function little_endian(
        p_big in number
      , p_bytes in pls_integer := 4
        return raw
      is
      begin
        return utl_raw.substr
                      ( utl_raw.cast_from_binary_integer( p_big
                                                        , utl_raw.little_endian
                      , 1
                      , p_bytes
      end;
      procedure add1file(
        p_zipped_blob in out blob
      , p_name in varchar2
      , p_content in blob
      is
        t_now date;
        t_blob blob;
        t_clen integer;
      begin
        t_now := sysdate;
        t_blob := utl_compress.lz_compress( p_content );
        t_clen := dbms_lob.getlength( t_blob );
        if p_zipped_blob is null
        then
          dbms_lob.createtemporary( p_zipped_blob
                                  , true
        end if;
        dbms_lob.append
          ( p_zipped_blob
          , utl_raw.concat
              ( hextoraw( '504B0304' )              -- Local file header signature
              , hextoraw( '1400' )                  -- version 2.0
              , hextoraw( '0000' )                  -- no General purpose bits
              , hextoraw( '0800' )                  -- deflate
              , little_endian
                  (   to_number( to_char( t_now
                                        , 'ss'
                                        ) ) / 2
                    + to_number( to_char( t_now
                                        , 'mi'
                                        ) ) * 32
                    + to_number( to_char( t_now
                                        , 'hh24'
                                        ) ) * 2048
                  , 2
                  )                                 -- File last modification time
              , little_endian
                  (   to_number( to_char( t_now
                                        , 'dd'
                    + to_number( to_char( t_now
                                        , 'mm'
                                        ) ) * 32
                    + ( to_number( to_char( t_now
                                          , 'yyyy'
                                          ) ) - 1980 ) * 512
                  , 2
                  )                                 -- File last modification date
              , dbms_lob.substr( t_blob
                               , 4
                               , t_clen - 7
                               )                                         -- CRC-32
              , little_endian( t_clen - 18 )                    -- compressed size
              , little_endian( dbms_lob.getlength( p_content ) )
                                                              -- uncompressed size
              , little_endian( length( p_name )
                             , 2
                             )                                 -- File name length
              , hextoraw( '0000' )                           -- Extra field length
              , utl_raw.cast_to_raw( p_name )                         -- File name
        dbms_lob.copy( p_zipped_blob
                     , t_blob
                     , t_clen - 18
                     , dbms_lob.getlength( p_zipped_blob ) + 1
                     , 11
                     );                                      -- compressed content
        dbms_lob.freetemporary( t_blob );
      end;
      procedure finish_zip(
        p_zipped_blob in out blob
      is
        t_cnt pls_integer := 0;
        t_offs integer;
        t_offs_dir_header integer;
        t_offs_end_header integer;
        t_comment raw( 32767 )
                     := utl_raw.cast_to_raw( 'Implementation by Anton Scheffer' );
      begin
        t_offs_dir_header := dbms_lob.getlength( p_zipped_blob );
        t_offs := dbms_lob.instr( p_zipped_blob
                                , hextoraw( '504B0304' )
                                , 1
        while t_offs > 0
        loop
          t_cnt := t_cnt + 1;
          dbms_lob.append
            ( p_zipped_blob
            , utl_raw.concat
                ( hextoraw( '504B0102' )
                                        -- Central directory file header signature
                , hextoraw( '1400' )                                -- version 2.0
                , dbms_lob.substr( p_zipped_blob
                                 , 26
                                 , t_offs + 4
                , hextoraw( '0000' )                        -- File comment length
                , hextoraw( '0000' )              -- Disk number where file starts
                , hextoraw( '0100' )                   -- Internal file attributes
                , hextoraw( '2000B681' )               -- External file attributes
                , little_endian( t_offs - 1 )
                                           -- Relative offset of local file header
                , dbms_lob.substr
                    ( p_zipped_blob
                    , utl_raw.cast_to_binary_integer
                                               ( dbms_lob.substr( p_zipped_blob
                                                                , 2
                                                                , t_offs + 26
                                               , utl_raw.little_endian
                    , t_offs + 30
                    )                                                 -- File name
          t_offs :=
              dbms_lob.instr( p_zipped_blob
                            , hextoraw( '504B0304' )
                            , t_offs + 32
        end loop;
        t_offs_end_header := dbms_lob.getlength( p_zipped_blob );
        dbms_lob.append
          ( p_zipped_blob
          , utl_raw.concat
              ( hextoraw( '504B0506' )       -- End of central directory signature
              , hextoraw( '0000' )                          -- Number of this disk
              , hextoraw( '0000' )          -- Disk where central directory starts
              , little_endian
                       ( t_cnt
                       , 2
                       )       -- Number of central directory records on this disk
              , little_endian( t_cnt
                             , 2
                             )        -- Total number of central directory records
              , little_endian( t_offs_end_header - t_offs_dir_header )
                                                      -- Size of central directory
              , little_endian
                        ( t_offs_dir_header )
                                           -- Relative offset of local file header
              , little_endian
                    ( nvl( utl_raw.length( t_comment )
                         , 0
                    , 2
                    )                                   -- ZIP file comment length
              , t_comment
      end;
      procedure save_zip(
        p_zipped_blob in blob
      , p_dir in varchar2 := 'MY_DIR'
      , p_filename in varchar2 := 'my.zip'
      is
        t_fh utl_file.file_type;
        t_len pls_integer := 32767;
      begin
        t_fh := utl_file.fopen( p_dir
                              , p_filename
                              , 'wb'
        for i in 0 .. trunc(  ( dbms_lob.getlength( p_zipped_blob ) - 1 ) / t_len )
        loop
          utl_file.put_raw( t_fh
                          , dbms_lob.substr( p_zipped_blob
                                           , t_len
                                           , i * t_len + 1
        end loop;
        utl_file.fclose( t_fh );
      end;
    end;
    /

  • Cannot use winzip to unzip the zip file zipped by java.util.zip

    Hi all,
    I use the followcode to create a zip file, and i downlaod it and try to use winzip to unzip this file but fail. The path is correct and i got the zip file. but it just cannot unzip.
    pls help
    thanks alot.
    Kin
              int count = 0;
              count = ContentDocuments.size();
              for (int i = 0; i < bb; i++)     {
                   System.out.println(filenames[i] + "");
              // Create a buffer for reading the files
              byte[] buf = new byte[10*1024*1024];
              try {      
                   String outFilename = MyDir + "zipfile/" + getContentID2()+".zip";
                   System.out.println("outFilename = " + outFilename);
                   ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
                   for (int i=0; i<filenames.length; i++) {           
                        FileInputStream in = new FileInputStream(filenames);
                        out.putNextEntry(new ZipEntry(filenames[i]));
                        int len;
                        while ((len = in.read(buf)) != -1) {               
                             out.write(buf, 0, len);
                        out.closeEntry();
                        in.close();
                   out.close();
              } catch (IOException e)     {
                   System.err.println("zipprocess " + e.getMessage());

    I've written a replacement zip file creator class. Not much tested but it seems to work, however I've yet to try it with the version of WINZIP that rejected my previous attempts. Oh, and the stored dates are garbage.
    * ZipOutputFile.java
    * Created on 25 March 2004, 13:08
    package zip;
    import java.io.IOException;
    import java.nio.ByteBuffer;
    * <p>Creates a ZIP archive in a file which WINZIP should be able to read.</p>
    * <p>Unfortunately zip archives generated by the standard Java class
    * {@link java.util.zip.ZipOutputStream}, while adhering to PKZIPs format specification,
    * don't appear to be readable by some versions of WinZip and similar utilities. This is
    * probably because they use
    * a format specified for writing to a non-seakable stream, where the length and CRC of
    * a file is writen to a special block following the data. Since the length of the binary
    * date is unknown this makes an archive quite complicated to read, and it looks like
    * WinZip hasn't bothered.</p>
    * <p>All data is Deflated. Close completes the archive, flush terminates the current entry.</p>
    * @see java.util.zip.ZipOutputStream
    * @author  Malcolm McMahon
    public class ZipOutputFile extends java.io.OutputStream {
        byte[] oneByte = new byte[1];
        java.io.RandomAccessFile archive;
        public final static short DEFLATE_METHOD = 8;
        public final static short VERSION_CODE = 20;
        public final static short MIN_VERSION = 10;
        public final static int  ENTRY_HEADER_MAGIC = 0x04034b50;
        public final static int  CATALOG_HEADER_MAGIC = 0x02014b50;
        public final static int  CATALOG_END_MAGIC = 0x06054b50;
        private final static short DISC_NUMBER = 0;
        ByteBuffer entryHeader = ByteBuffer.wrap(new byte[30]);
        ByteBuffer entryLater = ByteBuffer.wrap(new byte[12]);
        java.util.zip.CRC32 crcAcc = new java.util.zip.CRC32();
        java.util.zip.Deflater def = new java.util.zip.Deflater(java.util.zip.Deflater.DEFLATED, true);
        int totalCompressed;
        long MSEPOCH;
        byte [] deflateBuf = new byte[2048];
        public static final long SECONDS_TO_DAYS = 60 * 60 * 24;
         * Entry stores info about each file stored
        private class Entry {
            long offset;        // position of header in file
            byte[] name;
            long crc;
            int compressedSize;
            int uncompressedSize;
            java.util.Date date;
             * Contructor also writes initial header.
             * @param fileName Name under which data is stored.
             * @param date  Date to label the file with
             * @TODO get the date stored properly
            public Entry(String fileName, java.util.Date date) throws IOException {
                name = fileName.getBytes();
                this.date = date == null ? new java.util.Date() : date;
                entryHeader.position(10);
                putDate(entryHeader);
                entryHeader.putShort(26, (short)name.length);
                offset = archive.getFilePointer();
                archive.write(entryHeader.array());
                archive.write(name);
                catalog.add(this);
                crcAcc.reset();
                totalCompressed = 0;
                def.reset();
             * Finish writing entry data. Save the lenghts & crc for catalog
             * and go back and fill them in in the entry header.
            public void close() throws IOException {
                def.finish();
                while(!def.finished())
                    deflate();
                entryLater.position(0);
                crc = crcAcc.getValue();
                compressedSize = totalCompressed;
                uncompressedSize = def.getTotalIn();
                entryLater.putInt((int)crc);
                entryLater.putInt(compressedSize);
                entryLater.putInt(uncompressedSize);
                long eof = archive.getFilePointer();
                archive.seek(offset + 14);
                archive.write(entryLater.array());
                archive.seek(eof);
             * Write the catalog data relevant to this entry. Buffer is
             * preloaded with fixed data.
             * @param buf Buffer to organise fixed lenght part of header
            public void writeCatalog(ByteBuffer buf) throws IOException {
                buf.position(12);
                putDate(buf);
                buf.putInt((int)crc);
                buf.putInt(compressedSize);
                buf.putInt(uncompressedSize);
                buf.putShort((short)name.length);
                buf.putShort((short)0);  // extra field length
                buf.putShort((short)0);  // file comment length
                buf.putShort(DISC_NUMBER);  // disk number
                buf.putShort((short)0); // internal attributes
                buf.putInt(0);      // external file attributes
                buf.putInt((int)offset); // file position
                archive.write(buf.array());
                archive.write(name);
             * This writes the entries date in MSDOS format.
             * @param buf Where to write it
             * @TODO Get this generating sane dates
            public void putDate(ByteBuffer buf) {
                long msTime = (date.getTime() - MSEPOCH) / 1000;
                buf.putShort((short)(msTime % SECONDS_TO_DAYS));
                buf.putShort((short)(msTime / SECONDS_TO_DAYS));
        private Entry entryInProgress = null; // entry currently being written
        private java.util.ArrayList catalog = new java.util.ArrayList(12);  // all entries
         * Start a new output file.
         * @param name The name to store as
         * @param date Date - null indicates current time
        public java.io.OutputStream openEntry(String name, java.util.Date date) throws IOException{
            if(entryInProgress != null)
                entryInProgress.close();
            entryInProgress = new Entry(name, date);
            return this;
         * Creates a new instance of ZipOutputFile
         * @param fd The file to write to
        public ZipOutputFile(java.io.File fd) throws IOException {
            this(new java.io.RandomAccessFile(fd, "rw"));
         * Create new instance of ZipOutputFile from RandomAccessFile
         * @param archive RandomAccessFile
        public ZipOutputFile(java.io.RandomAccessFile archive) {
            this.archive = archive;
            entryHeader.order(java.nio.ByteOrder.LITTLE_ENDIAN);  // create fixed fields of header
            entryLater.order(java.nio.ByteOrder.LITTLE_ENDIAN);
            entryHeader.putInt(ENTRY_HEADER_MAGIC);
            entryHeader.putShort(MIN_VERSION);
            entryHeader.putShort((short)0);  // general purpose flag
            entryHeader.putShort(DEFLATE_METHOD);
            java.util.Calendar cal = java.util.Calendar.getInstance();
            cal.clear();
            cal.set(java.util.Calendar.YEAR, 1950);
            cal.set(java.util.Calendar.DAY_OF_MONTH, 1);
    //        def.setStrategy(Deflater.HUFFMAN_ONLY);
            MSEPOCH = cal.getTimeInMillis();
         * Writes the master catalogue and postamble and closes the archive file.
        public void close() throws IOException{
            if(entryInProgress != null)
                entryInProgress.close();
            ByteBuffer catEntry = ByteBuffer.wrap(new byte[46]);
            catEntry.order(java.nio.ByteOrder.LITTLE_ENDIAN);
            catEntry.putInt(CATALOG_HEADER_MAGIC);
            catEntry.putShort(VERSION_CODE);
            catEntry.putShort(MIN_VERSION);
            catEntry.putShort((short)0);
            catEntry.putShort(DEFLATE_METHOD);
            long catStart = archive.getFilePointer();
            for(java.util.Iterator it = catalog.iterator(); it.hasNext();) {
                ((Entry)it.next()).writeCatalog(catEntry);
            catEntry.position(0);
            catEntry.putInt(CATALOG_END_MAGIC);
            catEntry.putShort(DISC_NUMBER);
            catEntry.putShort(DISC_NUMBER);
            catEntry.putShort((short)catalog.size());
            catEntry.putShort((short)catalog.size());
            catEntry.putInt((int)(archive.getFilePointer() - catStart));
            catEntry.putInt((int)catStart);
            catEntry.putShort((short)0);
            archive.write(catEntry.array(), 0, catEntry.position());
            archive.setLength(archive.getFilePointer());  // truncate if old file
            archive.close();
            def.end();
         * Closes entry in progress.
        public void flush() throws IOException{
            if(entryInProgress == null)
                throw new IllegalStateException("Must call openEntry before writing");
            entryInProgress.close();
            entryInProgress = null;
         * Standard write routine. Defined by {@link java.io.OutputStream}.
         * Can only be used once openEntry has defined the file.
         * @param b  Bytes to write
        public void write(byte[] b) throws IOException{
            if(entryInProgress == null)
                throw new IllegalStateException("Must call openEntry before writing");
            crcAcc.update(b);
            def.setInput(b);
            while(!def.needsInput())
                deflate();
         * Standard write routine. Defined by {@link java.io.OutputStream}.
         * Can only be used once openEntry has defined the file.
         * @param b  Bytes to write
        public void write(int b) throws IOException{
            oneByte[0] = (byte)b;
            crcAcc.update(b);
            write(oneByte, 0, 1);
         *  Standard write routine. Defined by {@link java.io.OutputStream}.
         * Can only be used once openEntry has defined the file.
         * @param b  Bytes to write
         * @param off Start offset
         * @param len Byte count
        public void write(byte[] b, int off, int len) throws IOException{
            if(entryInProgress == null)
                throw new IllegalStateException("Must call openEntry before writing");
            crcAcc.update(b, off, len);
            def.setInput(b, off, len);
            while(!def.needsInput())
                deflate();
        * Gets a buffer full of coded data from the deflater and writes it to archive.
        private void deflate() throws IOException {
            int len = def.deflate(deflateBuf);
            totalCompressed += len;
            if(len > 0)
                archive.write(deflateBuf, 0, len);

  • RequestFocus() not working for JTextArea

    requestFocus() is not working for JTextArea.
    A validation message is displayed and when clicked on 'ok', requestFocus() does not work. Cursor is not shown in the text
    area.
    Any suggestions/solutions pls?

    here is the sample code:
    public boolean checkData()
    String comment = commentArea.getText().trim();
    if( comment.length() < MN_COMMENT || comment.length() > MX_COMMENT )
    showError(COMMENT_ALERT);
    commentArea.requestFocus();
    return false;
    return true;
    Focus is lost. TextArea is in scroll pane. Scroll pane is contanined in a container pane and pane is for JDialog.
    RequestFocus() is working for JRE 1.5.0_07. But its not working for JRE 1.5.0_0 and lower versions.

  • JTable, how to highlight cells with tooltips?

    Hello all!
    Mine problem is descriped in the topic - I though about custom cell renderer but I dont have an Idea how to change background for many other cells in other rows and don't change background in whole columns. Any of You could help?

    Hey thanks for replying.
    With code like that:
    public class yellowCellRenderer
      extends DefaultTableCellRenderer
      private int whichRow = 0;
      public yellowCellRenderer(int saveToRow)
        this.whichRow = saveToRow;
      public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column)
        if(this.whichRow == row){
         this.setBackground(Color.YELLOW);  // All columns verified were empty - set our background RED
        return this;
    }and usage:
         comments.add(comment);
         JTable table = getMainTable();
         TableColumnModel colModel = table.getColumnModel();
         for(int i=0;i<comment.length;i++){
             if(!Main.isStringEmpty((String)comment)){
              TableColumn column = colModel.getColumn(i);
              column.setCellRenderer(
                   new yellowCellRenderer(table.getRowCount()-1)
    Every each cell in column gets yellow background... What am I doing wrong?

  • UTL_COMPRESS Zipping Multiple BLOBs

    Hey everyone, I'm having trouble figuring out how to use UTL_COMPRESS.
    What I want to do is take several BLOBs from one table, and put them into one zip file. Can anyone show me an example of where this is done?
    Here is some sample code of what I have so far:
    My table:
    CREATE TABLE  "FILES"
       (     "FILE_ID" NUMBER,
         "FILE_TYPE" NUMBER,
         "FILENAME" VARCHAR2(1000),
         "DATE_ADDED" DATE,
         "ADDED_BY" VARCHAR2(255),
         "FILE_BLOB" BLOB,
    /Some sample code:
    DECLARE
      b_dl_file1 BLOB;
      b_dl_file2 BLOB;
      b_dl_file3 BLOB;
      b_compressed_file BLOB;
    BEGIN
    select FILE_BLOB
    into b_dl_file1
    from FILES
    where FILE_ID = 64;
    select FILE_BLOB
    into b_dl_file2
    from FILES
    where FILE_ID = 65;
    select FILE_BLOB
    into b_dl_file3
    from FILES
    where FILE_ID = 66;
    b_compressed_file := UTL_COMPRESS.LZ_COMPRESS(b_dl_file1);
    END;So what I've posted works fine, it compresses a single file. What I want is to take all three of those blobs (for example) and add them to one zip file. I've looked into using UTL_COMPRESS.LZ_COMPRESS_ADD, but as far as I can see, that only takes RAW data. Will I have to break my BLOBs into RAW strings and then compress those? Will that even work?
    Any help would be appreciated!

    Wow! Thanks! That's exactly what I'm looking for. I'm having some trouble getting this code to run though, I'm recieving the following error:
    "ORA-06502: PL/SQL: numeric or value error: invalid LOB locator specified: ORA-22275 "
    I've been debugging and it looks like its coming from the add1file procedure.
    I modified the code a bit to make it into a package:
    CREATE OR REPLACE PACKAGE zip_blobs AS
      /*Package written by Anton Scheffer, used with permission*/
      PROCEDURE add1file(p_zipped_blob in out blob, p_name in varchar2, p_content in blob);
      PROCEDURE finish_zip(p_zipped_blob in out blob);
      PROCEDURE save_zip(p_zipped_blob in blob, p_dir in varchar2, p_filename in varchar2);
    END zip_blobs;
    CREATE OR REPLACE PACKAGE BODY zip_blobs AS
      function little_endian( p_big in number, p_bytes in pls_integer := 4 )
      return raw
      is
      begin
        return utl_raw.substr( utl_raw.cast_from_binary_integer( p_big, utl_raw.little_endian ), 1, p_bytes );
      end;
      procedure add1file
        ( p_zipped_blob in out blob
        , p_name in varchar2
        , p_content in blob
      is
        t_now date;
        t_blob blob;
        t_clen integer;
      begin
        t_now := sysdate;
        t_blob := utl_compress.lz_compress( p_content );
        t_clen := dbms_lob.getlength( t_blob );
        if p_zipped_blob is null
        then
          dbms_lob.createtemporary( p_zipped_blob, true );
        end if;
        dbms_lob.append( p_zipped_blob
                       , utl_raw.concat( hextoraw( '504B0304' ) -- Local file header signature
                                       , hextoraw( '1400' )     -- version 2.0
                                       , hextoraw( '0000' )     -- no General purpose bits
                                       , hextoraw( '0800' )     -- deflate
                                       , little_endian( to_number( to_char( t_now, 'ss' ) ) / 2
                                                      + to_number( to_char( t_now, 'mi' ) ) * 32
                                                      + to_number( to_char( t_now, 'hh24' ) ) * 2048
                                                      , 2
                                                      ) -- File last modification time
                                       , little_endian( to_number( to_char( t_now, 'dd' ) )
                                                      + to_number( to_char( t_now, 'mm' ) ) * 32
                                                      + ( to_number( to_char( t_now, 'yyyy' ) ) - 1980 ) * 512
                                                      , 2
                                                      ) -- File last modification date
                                       , dbms_lob.substr( t_blob, 4, t_clen - 7 )         -- CRC-32
                                       , little_endian( t_clen - 18 )                     -- compressed size
                                       , little_endian( dbms_lob.getlength( p_content ) ) -- uncompressed size
                                       , little_endian( length( p_name ), 2 )             -- File name length
                                       , hextoraw( '0000' )                               -- Extra field length
                                       , utl_raw.cast_to_raw( p_name )                    -- File name
        dbms_lob.append( p_zipped_blob, dbms_lob.substr( t_blob, t_clen - 18, 11 ) );     -- compressed content
        dbms_lob.freetemporary( t_blob );
      end;
      procedure finish_zip( p_zipped_blob in out blob )
      is
        t_cnt pls_integer := 0;
        t_offs integer;
        t_offs_dir_header integer;
        t_offs_end_header integer;
        t_comment raw(32767) := utl_raw.cast_to_raw( 'Implementation by Anton Scheffer' );
      begin
        t_offs_dir_header := dbms_lob.getlength( p_zipped_blob );
        t_offs := dbms_lob.instr( p_zipped_blob, hextoraw( '504B0304' ), 1 );
        while t_offs > 0
        loop
          t_cnt := t_cnt + 1;
          dbms_lob.append( p_zipped_blob
                         , utl_raw.concat( hextoraw( '504B0102' )      -- Central directory file header signature
                                         , hextoraw( '1400' )          -- version 2.0
                                         , dbms_lob.substr( p_zipped_blob, 26, t_offs + 4 )
                                         , hextoraw( '0000' )          -- File comment length
                                         , hextoraw( '0000' )          -- Disk number where file starts
                                         , hextoraw( '0100' )          -- Internal file attributes
                                         , hextoraw( '2000B681' )      -- External file attributes
                                         , little_endian( t_offs - 1 ) -- Relative offset of local file header
                                         , dbms_lob.substr( p_zipped_blob
                                                          , utl_raw.cast_to_binary_integer( dbms_lob.substr( p_zipped_blob, 2, t_offs + 26 ), utl_raw.little_endian )
                                                          , t_offs + 30
                                                          )            -- File name
          t_offs := dbms_lob.instr( p_zipped_blob, hextoraw( '504B0304' ), t_offs + 32 );
        end loop;
        t_offs_end_header := dbms_lob.getlength( p_zipped_blob );
        dbms_lob.append( p_zipped_blob
                       , utl_raw.concat( hextoraw( '504B0506' )                                    -- End of central directory signature
                                       , hextoraw( '0000' )                                        -- Number of this disk
                                       , hextoraw( '0000' )                                        -- Disk where central directory starts
                                       , little_endian( t_cnt, 2 )                                 -- Number of central directory records on this disk
                                       , little_endian( t_cnt, 2 )                                 -- Total number of central directory records
                                       , little_endian( t_offs_end_header - t_offs_dir_header )    -- Size of central directory
                                       , little_endian( t_offs_dir_header )                        -- Relative offset of local file header
                                       , little_endian( nvl( utl_raw.length( t_comment ), 0 ), 2 ) -- ZIP file comment length
                                       , t_comment
      end;
      procedure save_zip
        ( p_zipped_blob in blob
        , p_dir in varchar2
        , p_filename in varchar2
      is
        t_fh utl_file.file_type;
        t_len pls_integer := 32767;
      begin
        t_fh := utl_file.fopen( p_dir, p_filename, 'wb' );
        for i in 0 .. trunc( ( dbms_lob.getlength( p_zipped_blob ) - 1 ) / t_len )
        loop
          utl_file.put_raw( t_fh, dbms_lob.substr( p_zipped_blob, t_len, i * t_len + 1 ) );
        end loop;
        utl_file.fclose( t_fh );
      end;
    END zip_blobs;My code:
    DECLARE
      b_dl_file1 BLOB;
      b_dl_file2 BLOB;
      b_dl_file3 BLOB;
      b_zipped_blob BLOB;
    BEGIN
      select FILE_BLOB
      into b_dl_file1
      from FILES
      where FILE_ID = 64;
      select FILE_BLOB
      into b_dl_file2
      from FILES
      where FILE_ID = 65;
      select FILE_BLOB
      into b_dl_file3
      from FILES
      where FILE_ID = 66;
      zip_blobs.add1file(b_zipped_blob, 'test1.bin', b_dl_file1);
      zip_blobs.add1file(b_zipped_blob, 'test2.bin', b_dl_file2);
      zip_blobs.add1file(b_zipped_blob, 'test3.bin', b_dl_file3);
      zip_blobs.finish_zip(b_zipped_blob);
      insert into compressed_files(compressed_blob) values(b_zipped_blob);
    END;So I'm inserting it into a table, but even when I use save_zip, I get the same error. I tried playing around with freeing p_zipped_blob and not freeing t_blob, but it didn't seem to work, and I'm not seeing where else it could be going wrong. Any more help would be awesome!
    Thanks!

  • EDIT limit of a column in ALV grid

    I want to have an editable column in my ALV grid program.
    i am using below code while creating field catalog.
    gwa_fieldcat-tabname = text-02.                  "'GIT_BOM_REP'.
    gwa_fieldcat-fieldname = COMMENT.                "'Comment'.
    gwa_fieldcat-seltext_l = text-058.                "'Comment'.
    gwa_fieldcat-edit = gc_x.
    APPEND gwa_fieldcat TO git_fieldcat.
    CLEAR gwa_fieldcat.
    I am able to write in the output, but the problem is i can write only upto 10 characters.
    Field length for this editable column is 200 and type is C.
    Please suggest.
    Thanks in Advance,
    James.

    Thanks for your reply.....
    I am using this code also:
    *Layout to set width.
      gwa_layout-colwidth_optimize = gc_x.  
      gwa_layout-box_fieldname = 'BOX'.
      gwa_layout-box_tabname = 'GIT_BOM_REP'.
    GIT_BOM_REP-COMMENT length is 200 and typ is C.
    this is the 20th column in my ALV report. and i am using REUSE_ALV_GRID_DISPLAY FM.
    Regards,
    James

  • Assertion Error when an action is invoked

    We have a form which has multiple input fields as well as some dropdowns.
    Example Dropdown 1, Dropdown 2
    When you click the value in Dropdown 1, based on it Dropdown 2 is dynamically populated.
    It was working fine for us previously. Somehow now when we click on Dropdown 1, it gives the following exception:
    Error opening /pageFlowControllers/companyLocationController/CompanyLocationController.jpf.
    The source of this error is:
    com.bea.portlet.adapter.scopedcontent.ActionLookupFailedException: java.lang.AssertionError
    at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:699)
    at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.processActionInternal(ScopedContentCommonSupport.java:144)
    at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction(PageFlowStubImpl.java:107)
    at com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiActionHandler.java:99)
    at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:180)
    at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:168)
    at com.bea.netuix.servlets.controls.content.NetuiContent.handlePostbackData(NetuiContent.java:222)
    at com.bea.netuix.nf.ControlLifecycle$2.visit(ControlLifecycle.java:178)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:351)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361)
    at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:128)
    at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361)
    at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:339)
    at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:330)
    at com.bea.netuix.nf.Lifecycle.runInbound(Lifecycle.java:162)
    at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:137)
    at com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:370)
    at com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:229)
    at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:183)
    at com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:221)
    at com.bea.netuix.servlets.manager.PortalServlet.service(PortalServlet.java:594)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:251)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3243)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2003)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1909)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1359)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
    Caused by: java.lang.AssertionError
    at org.apache.beehive.netui.script.el.util.ParseUtils.convertType(ParseUtils.java:185)
    at org.apache.beehive.netui.script.el.tokens.ExpressionToken.beanUpdate(ExpressionToken.java:211)
    at org.apache.beehive.netui.script.el.tokens.IdentifierToken.write(IdentifierToken.java:96)
    at org.apache.beehive.netui.script.el.ExpressionTerm.update(ExpressionTerm.java:165)
    at org.apache.beehive.netui.script.el.ParsedExpression.update(ParsedExpression.java:140)
    at org.apache.beehive.netui.script.el.util.ParseUtils.update(ParseUtils.java:91)
    at org.apache.beehive.netui.script.el.ExpressionEvaluatorImpl.update(ExpressionEvaluatorImpl.java:83)
    at org.apache.beehive.netui.pageflow.ProcessPopulate.populate(ProcessPopulate.java:229)
    at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processPopulate(PageFlowRequestProcessor.java:327)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
    at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:554)
    at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:851)
    at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:630)
    at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:157)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1169)
    at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:688)
    ... 49 more
    Basically what I can see from the logs is that it is unable to do an action look up. The funny part of it is that on some of the developer machines the code is working fine while in some case it is breaking. The same code was working fine earlier.I tried googling up but unable to find any help on this. Can you please suggest what can be the possible issue (may be some silly mistake causing this to happen)?

    Its not the same functionality which is working and
    failing
    (ignore referrer it isnt relevant)
    "CompanyAddressPortlet_1_2wlw-select_key:{actionForm.B
    BcpPopId}"
    is missing from the failing code, probably a code
    issue , perhaps your validation method is throwing a
    runtime exception
    Ensure you test EXACTLY the same thing from both
    machines
    regards
    deepakHi Deepak,
    Yes I did see that difference when i checked the diff of both the log files but I am unable to make out what is causing this difference.
    1. The same code is executed on different machines. In most of the machines it is failing. However, for some machines it is working.
    2. The logs attached in last email were produced testing the same functionality oin both the machines.
    3. If it is a code issue, how can the same code when executed on other environment is working.
    I am unable to trace it down. Can you please let me know if you can figure out something. I am attaching the JSP which is being executed,.
    <%@ page language="java" contentType="text/html;charset=UTF-8"%>
    <%@taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@taglib uri="/WEB-INF/tld/custom-translation.tld" prefix="colt"%>
    <jsp:useBean id="moduleNameEnum" beanName="com.colt.util.ModuleNameEnum" scope="page"></jsp:useBean>
    <script language="JavaScript">
    //here you place the ids of every element you want.
    var ids=new Array('a1','a2');
    function switchid(id){     
         hideallids();
         showdiv(id);
    function hideallids(){
         //loop through the array and hide each element by id
         for (var i=0;i<ids.length;i++){
              hidediv(ids);
    function hidediv(id) {
         //safe function to hide an element with a specified id
         if (document.getElementById) { // DOM3 = IE5, NS6
              document.getElementById(id).style.display = 'none';
         else {
              if (document.layers) { // Netscape 4
                   document.id.display = 'none';
              else { // IE 4
                   document.all.id.style.display = 'none';
    function showdiv(id) {
         //safe function to show an element with a specified id
         if (document.getElementById) { // DOM3 = IE5, NS6
              document.getElementById(id).style.display = 'block';
         else {
              if (document.layers) { // Netscape 4
                   document.id.display = 'block';
              else { // IE 4
                   document.all.id.style.display = 'block';
    function openTemplate(requestid, requestType, fileName)
         var strUrl="<%= request.getContextPath()%>/pageFlowControllers/resolveRequest/getUploadedFile.do?requestId=" + requestid + "&requestType=" requestType "&columnName=" +fileName;
         popup_window = window.open(strUrl,"newWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=no,resizable=yes");
    </script>
    <!--************************ CONTENT ****************************-->
    <c:if test="${requestScope.errorFlag!=null && requestScope.errorFlag eq 'true'}">
         <script language="javascript">
              setFlag();
         </script>
    </c:if>
         <div id="gContentSalesArea">
                   <h1 class="uaPageTitle">
                        <colt:content key="request_Details">Request Details</colt:content>
                        <netui:anchor action="exception.goToHelp" popup="true">
                             <img src="/coltPortalWeb/framework/skins/coltBaseSkin/images/pageHelp_icon.gif" width="15" height="15" alt="${sessionScope.help_icon}" border="0" />
                             <netui:parameter name="module" value="${pageScope.moduleNameEnum.CREATE_REQUEST.moduleID}"></netui:parameter>
                        </netui:anchor>
                   </h1>
                   <colt:error key="request.bandwidth.required"></colt:error>
                   <colt:error key="request.currency.required"></colt:error>
                   <colt:error key="changesSuccessfullySaved"></colt:error>
                   <colt:error key="saveRequestBeforeSubmit"></colt:error>
                   <colt:error key="request.comments.length"></colt:error>
                   <colt:error key="required.bcpFile"></colt:error>
                   <colt:error key="request.quantity.required"></colt:error>
                   <colt:error key="request.interfaceField.required"></colt:error>
                   <colt:error key="request.productGroup.required"></colt:error>
                   <colt:error key="request.aendAddress.required"></colt:error>
                   <colt:error key="request.bendAddress.required"></colt:error>
                   <colt:error     key="request.term.required"></colt:error>
                   <colt:error     key="request.apop.required"></colt:error>
                   <colt:error     key="request.bpop.required"></colt:error>
                   <colt:error     key="request.potential.required"></colt:error>
                   <colt:error     key="installAmtAfterDisc.invalid"></colt:error>
                   <colt:error     key="installAmtBeforeDisc.invalid"></colt:error>
                   <colt:error     key="monthlyRentAfterDisc.invalid"></colt:error>
                   <colt:error     key="monthlyRentBeforeDisc.invalid"></colt:error>
                   <colt:error key="interfaceField.invalid"></colt:error>
                   <colt:error key="quantity.invalid"></colt:error>
                   <colt:error key="aendCompanyName.invalid.length"></colt:error>
                   <colt:error key="bendCompanyName.invalid.length"></colt:error>
                   <colt:error key="aendCompanyName.invalid"></colt:error>
                   <colt:error key="bendCompanyName.invalid"></colt:error>
              <div class="ReqInfo"><span class="ReqInfobold">
              <colt:content key="COMPANY">Company</colt:content>:</span>
              <span style="padding:2px;"><c:out value="${sessionScope.addEditRequestVO.opportunityDetails.companyDetails.name}"></c:out></span>  |
              <span class="ReqInfobold"><colt:content key="companyAddress_OCN">OCN</colt:content>:</span>
              <c:out value="${sessionScope.addEditRequestVO.opportunityDetails.companyDetails.xrefOCN}"></c:out>   |
              <span class="ReqInfobold">   <colt:content key="companyAddress_oppNo">OPP NO</colt:content>:</span>
              <c:out value="${sessionScope.addEditRequestVO.opportunityDetails.xrefOpportunityNumber}"></c:out>
              <c:if test="${requestScope.update!=null && requestScope.update eq 'true'}">  |  
              <span class="ReqInfobold"><colt:content key="resolve_request_number">Request number</colt:content>: </span>${pageFlow.requestId}</c:if></div>
                   <ul id="uaStepNav" class="uaSN1 uaNavDone">
                        <li class="fstep stepon"><span class="st1"><colt:content key="request_Company_Locations">Company/Locations</colt:content></span></li>
                        <li class="stepon"><span class="st2"><colt:content key="request_Requests">Requests</colt:content></span></li>
                   </ul>     
              <div id="uaStepContent">
              <%@ include file="../../jsp/common/selectRequestType.jspf" %>
    <netui:form action="saveBuildingConnectivityRequest" enctype="multipart/form-data" method="post">
         <c:set var="requestVO" value="${pageFlow.pf_requestDetailsVO.requestVO}" scope="page" />
         <c:set var="connectivityVO" value="${pageFlow.pf_requestDetailsVO.connectivityRequestVO}" scope="page" />
         <c:set var="opportunityVO" value="${pageFlow.pf_opportunityVO}" scope="page" />
         <c:set var="main" value="${pageFlow.pf_Main}" scope="page" />
         <div id="dataRequest" class="salesP5">
         <div class="salesHeader">
              <h2><colt:content key="building_Connectivity_Request_Details">Building Connectivity Request Details</colt:content></h2>
         </div>
              <div id="salesMiddle1Pane" class="salesP4">
              <div class="scrollareacommon">
                        <div class="grayboxcommon">
                             <fieldset>
                                  <div>
                                       <div class="bold">
                                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                 <tr>
                                                 <th width="3%" scope="col">     </th>
                                                 <netui:radioButtonGroup datasource="actionForm.mainRadio" defaultValue="1">
                                                      <th width="97%" scope="col">
                                                           <netui:radioButtonOption styleClass="width20" tagId="mainOption" value="1" onClick="switchid('a1');" disabled="${pageFlow.pf_Main_File}">
                                                                <label for="country"><colt:content key="stdBCP_fileUpload">BCP Form</colt:content>
                                                                </label>
                                                           </netui:radioButtonOption>
                                                      </th>
                                                 </tr>
                                            </table>
                                       </div>
                                  <c:if test="${pageFlow.pf_File_Show eq 'true' && pageFlow.pf_Form_Show eq 'true'}">
                                       <div id='a1' style="display:block;">
                                  </c:if>     
                                  <c:if test="${pageFlow.pf_File_Show eq 'false' && pageFlow.pf_Form_Show eq 'true'}">
                                       <div id='a1' style="display:none;">
                                  </c:if>     
                                  <c:if test="${pageFlow.pf_File_Show eq 'true' && pageFlow.pf_Form_Show eq 'false'}">
                                       <div id='a1' style="display:block;">
                                  </c:if>     
                                  <c:if test="${pageFlow.pf_File_Show eq 'false' && pageFlow.pf_Form_Show eq 'true'
                                                 && pageFlow.pf_Main_File eq 'true' && pageFlow.pf_Main eq 'false'}">
                                       <div id='a1' style="display:none;">
                                  </c:if>
                                            <div class="addressInput">
                                                 <netui:fileUpload tagId="file" dataSource="actionForm.bcpfile" styleClass="file" />
                                            </div>
                                            <c:if test="${connectivityVO.bcpFile != null}">
                                       <div class="download">
                                       <netui:anchor href="javascript:openTemplate('${requestScope.requestID}','${pageFlow.pf_requestType}','${connectivityVO.bcpCreateFileName}Xcreate');">
                                       Download Bcp File
                             </netui:anchor>
                             </div>
              </c:if>
                                       </div>
                                  <div class="cls"></div>
                             </fieldset>
                        </div>
                        <div>
                             <div class="aligncentre">
                                  <span class="grey constricty "><colt:content key="stdBCP_OR">OR</colt:content></span>
                             </div>
                        </div>           
                        <div class="grayboxcommon">
                        <fieldset>
                             <div>
                                  <div class="bold">
                                       <table border="0" cellspacing="0" cellpadding="0">
                                            <tr>
                                                 <th width="3%" scope="col"></th>
                                                 <th width="97%" scope="col">
                                                      <netui:radioButtonOption styleClass="width20" tagId="mainOption" value="2" onClick="switchid('a2');" disabled="${pageFlow.pf_Main}">
                                                           <label for="country"><colt:content key="stbBCP_FillForm">Fill the form below</colt:content>
                                                           </label>
                                                      </netui:radioButtonOption>
                                                 </th>
                                                 </netui:radioButtonGroup>
                                            </tr>
                                       </table>
                                  </div>
                                  <div class="cls"></div>
                                  <c:if test="${pageFlow.pf_File_Show eq 'true' && pageFlow.pf_Form_Show eq 'true'}">
                                       <div id='a2' style="display:none;">
                                  </c:if>     
                                  <c:if test="${pageFlow.pf_File_Show eq 'false' && pageFlow.pf_Form_Show eq 'true'}">
                                       <div id='a2' style="display:block;">
                                  </c:if>
                                  <c:if test="${pageFlow.pf_File_Show eq 'true' && pageFlow.pf_Form_Show eq 'false'}">
                                       <div id='a2' style="display:none;">
                                  </c:if>
                                  <c:if test="${pageFlow.pf_File_Show eq 'false' && pageFlow.pf_Form_Show eq 'true' &&
                                                 pageFlow.pf_Main eq 'false' && pageFlow.pf_Main_File eq 'true'}">
                                       <div id='a2' style="display:block;">
                                  </c:if>
                                                 <div class="productTypeLabel">
                                                           <label for="product"><colt:content key="request_productGroup">Product Group</colt:content> *:</label>
                                                 </div>
                                                 <div class="addressInput">
                                                      <netui:select tagId="product" styleClass="producttypedd" dataSource="actionForm.product" onChange="setFlag();submitFormProduct('-1');">
                                                           <c:forEach var="productVO" items="${pageFlow.productVOList}">
                                                                <netui:selectOption value="${productVO.id}">
                                                                     <colt:content key="${productVO.translationKey}"></colt:content>
                                                                </netui:selectOption>
                                                           </c:forEach>
                                                      </netui:select>
                                                 </div>
                                                 <div class="cls"></div>
                                                 <div class="productTypeLabel">
                                                      <label for="bandwidth"><colt:content key="request_Bandwidth">Bandwidth</colt:content> *:</label>
                                                 </div>
                                                 <div class="addressInput">
                                                      <netui:select tagId="bandwidth" styleClass="producttypedd" dataSource="actionForm.bandwidth" onChange="setFlag()">
                                                           <c:forEach var="bandwidthVO" items="${pageFlow.bandwidthVOList}">
                                                                <netui:selectOption value="${bandwidthVO.id}">
                                                                     <colt:content key="${bandwidthVO.translationKey}"></colt:content>
                                                                </netui:selectOption>
                                                           </c:forEach>
                                                      </netui:select></div>
                                                 <div class="cls"></div>
                                                 <div class="productTypeLabel">
                                                      <label for="Contract Terms"><colt:content key="request_Contract_Terms_yrs">Contract Terms(Yrs)</colt:content> *:</label>
                                                 </div>
                                                 <div class="addressInput">
                                                      <netui:select tagId="terms" styleClass="producttypedd" dataSource="actionForm.termOfContract" onChange="setFlag()">
                                                           <c:forEach var="termOfContractVO" items="${pageFlow.termOfContractVOList}">
                                                                <netui:selectOption value="${termOfContractVO.id}">
                                                                <colt:content key="${termOfContractVO.translationKey}"></colt:content>
                                                                </netui:selectOption>
                                                           </c:forEach>
                                                      </netui:select>
                                                 </div>
                                                 <div class="cls"></div>
                                                 <div class="productTypeLabel">
                                                      <label for="Currency"><colt:content key="request_Currency">Currency</colt:content> *:</label>
                                                 </div>
                                                 <div class="addressInput">
                                                      <netui:select tagId="currency" styleClass="producttypedd" dataSource="actionForm.currency" onChange="setFlag()">
                                                           <c:forEach var="currencyVO" items="${pageFlow.currencyVOList}">
                                                                <netui:selectOption value="${currencyVO.code}">
                                                                     <colt:content key="${currencyVO.translationKey}"></colt:content>
                                                                </netui:selectOption>
                                                           </c:forEach>
                                                      </netui:select>
                                                 </div>
                                                 <div class="cls"></div>
                                                 <div class="productTypeLabel">
                                                      <label for="interf"><colt:content key="request_interf">Interface</colt:content> *:</label>
                                                 </div>
                                                 <div class="addressInput">
                                                      <netui:textBox tagId="interf" onChange="setFlag()" styleClass="producttype"     dataSource="actionForm.interfaceField" maxlength="50" /></div>
                                                 <div class="cls"></div>
                                                 <div class="productTypeLabel">
                                                      <label for="quantity"><colt:content key="request_quantity">Quantity</colt:content> *:</label>
                                                 </div>
                                                 <div class="addressInput">
                                                      <netui:textBox tagId="quantity" onChange="setFlag()" styleClass="producttype" dataSource="actionForm.quantity" maxlength="10" /></div>
                                                 <div class="cls"></div>
                                                 <div class="productTypeLabel">
                                                      <label for="potential"><colt:content key="request_potential">Potential</colt:content> *:</label>
                                                 </div>
                                                 <div class="addressInput">
                                                      <netui:select tagId="potential" styleClass="producttypedd" dataSource="actionForm.potential" onChange="setFlag()">
                                                           <c:forEach var="potentialVO" items="${pageFlow.potentialVOList}">
                                                                <netui:selectOption value="${potentialVO.id}">
                                                                <colt:content key="${potentialVO.translationKey}"></colt:content>
                                                                </netui:selectOption>
                                                           </c:forEach>
                                                      </netui:select>
                                                 </div>
                                                 <div class="cls" style="border-bottom:solid 2px #FFFFFF;"> </div>
                                                      <div class="cls"></div>
                                                      <div class="productTypeLabel">
                                                           <label for="address"><colt:content key="request_Address">Address</colt:content>:</label>
                                                      </div>
                                                      <div class="chooseadd" style="padding-top:3px">
                                                           <colt:content key="request_ChooseAddress">(Choose From List)</colt:content>
                                                      </div>
                                                      <div class="cls"></div>
                                            <netui:radioButtonGroup dataSource="actionForm.radio">
                                                 <div>
                                                      <div class="productTypeLabel">
                                                           <netui:radioButtonOption onChange="setFlag()" styleClass="width20" tagId="AEnd"     value="1">
                                                                <colt:content key="request_AEndAddress">A End</colt:content> *:
                                       </netui:radioButtonOption>
                                  </div>
                                                      <div class="addressInput">
                                                           <netui:textBox readonly="true" onChange="setFlag()" styleClass="producttype" tagId="aendAddress" dataSource="actionForm.aendAddress" maxlength="50"></netui:textBox>
                                                           <netui:hidden tagId="aendAddressId" dataSource="actionForm.aendAddressId"></netui:hidden>
                                                      </div>
                                                      <div class="cls"></div>
                                                      <div class="productTypeLabel">
                                                           <label for="company" style="margin-left:5px"><colt:content key="request_company">Company :</colt:content></label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:textBox tagId="aendCompany" onChange="setFlag()" styleClass="producttype" dataSource="actionForm.aendCompanyName" maxlength="50"/>
                                                      </div>
                                                      <div class="cls"></div>                                                  
                                                      <div class="productTypeLabel">
                                                           <label for="popid" style="display:block; margin-left:5px"><colt:content key="request_popid">POP ID(Check Xperweb)</colt:content> :</label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:textBox tagId="pop" onChange="setFlag()" styleClass="producttype" dataSource="actionForm.ABcpPop" />
                                                      </div>
                                                      <div class="cls"></div>                                                  
                                                      <div class="productTypeLabel">
                                                           <label for="pop" style="margin-left:5px"><colt:content key="request_pop">POP</colt:content> *:</label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:select tagId="aendpop" styleClass="producttypedd" dataSource="actionForm.ABcpPopId" onChange="setFlag()">
                                                                <c:forEach var="aendPopVO" items="${pageFlow.bcpVOList}">
                                                                     <netui:selectOption value="${aendPopVO.id}">
                                                                          <colt:content key="${aendPopVO.translationKey}"></colt:content>
                                                                     </netui:selectOption>
                                                                </c:forEach>
                                                           </netui:select>
                                                      </div>
                                                 </div>
                                                 <div class="cls"></div>
                                                 <div>
                                                      <div class="productTypeLabel">
                                                           <netui:radioButtonOption onChange="setFlag()" styleClass="width20" tagId="BEnd" value="2">
                                                                <colt:content key="request_BEndAddress">B End</colt:content> *:
                                                 </netui:radioButtonOption>
                                            </div>
                                                      <div class="addressInput">
                                                           <netui:textBox onChange="setFlag()" styleClass="producttype" tagId="bendAddress" dataSource="actionForm.bendAddress" readonly="true"></netui:textBox>
                                                           <netui:hidden tagId="bendAddressId" dataSource="actionForm.bendAddressId"></netui:hidden>
                                                      </div>
                                                      <div class="cls"></div>
                                                      <div class="productTypeLabel">
                                                           <label for="company" style="margin-left:5px"><colt:content key="request_company">Company :</colt:content></label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:textBox maxlength="50" tagId="aendCompany" onChange="setFlag()" styleClass="producttype" dataSource="actionForm.bendCompanyName" />
                                                      </div>
                                                      <div class="cls"></div>
                                                      <div class="productTypeLabel">
                                                           <label for="popid" style="display:block;margin-left:5px"><colt:content key="request_popid">POP ID(Check Xperweb)</colt:content> :</label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:textBox tagId="pop" onChange="setFlag()" styleClass="producttype"dataSource="actionForm.BBcpPop" />
                                                      </div>
                                                      <div class="cls"></div>
                                                      <div class="productTypeLabel">
                                                           <label for="pop" style="margin-left:5px"><colt:content key="request_pop">POP</colt:content> *:</label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:select tagId="bendpop" styleClass="producttypedd" dataSource="actionForm.BBcpPopId" onChange="setFlag()">
                                                                <c:forEach var="bendPopVO" items="${pageFlow.bcpVOList}">
                                                                     <netui:selectOption value="${bendPopVO.id}">
                                                                          <colt:content key="${bendPopVO.translationKey}"></colt:content>
                                                                     </netui:selectOption>
                                                                </c:forEach>
                                                           </netui:select>
                                                      </div>
                                                      <div class="cls"></div>
                                                 </div>
                                            <div class="cls"></div>
                                       </netui:radioButtonGroup>
                                                      <div class="cls" style="border-bottom:solid 2px #FFFFFF;"> </div>
                                                      <div class="cls"></div>
                                                      <div class="bold">
                                                           <label for="revenue" style="font-size:12px;"><colt:content key="request_revenue">Revenue</colt:content></label>
                                                      </div>
                                                      <div class="cls"></div>
                                                      <div class="cls"></div>
                                                      <div class="bold">
                                                           <label for="before_discount" style="font-size:11.5px;"><colt:content key="request_beforeDiscount">Before Discount (As per product Price List)</colt:content></label>
                                                      </div>
                                                      <div class="productTypeLabel">
                                                           <label for="befInstallationCharge"><colt:content key="request_installationCharge">Installation Charge</colt:content> :</label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:textBox maxlength="10" tagId="befInstallationCharge" onChange="setFlag()" styleClass="producttype" dataSource="actionForm.inst_amt_before_disc" />
                                                      </div>
                                                      <div class="cls"></div>
                                                      <div class="productTypeLabel">
                                                           <label for="befMonRent"><colt:content key="request_monthlyRent">Monthly Rent/PSTN</colt:content> :</label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:textBox maxlength="10" tagId="befMonRent" onChange="setFlag()" styleClass="producttype" dataSource="actionForm.mon_rent_before_disc" />
                                                      </div>
                                                      <div class="cls"> </div>
                                                      <div class="bold">
                                                           <label for="after_discount"><colt:content key="request_afterDiscount">After Discount (Average discount applied over contract term)</colt:content></label>
                                                      </div>
                                                      <div class="cls"></div>
                                                      <div class="productTypeLabel">
                                                           <label for="aftInstallationCharge"><colt:content key="request_installationCharge">Installation Charge</colt:content> :</label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:textBox maxlength="10" tagId="aftInstallationCharge" onChange="setFlag()" styleClass="producttype" dataSource="actionForm.inst_amt_after_disc" />
                                                      </div>
                                                      <div class="cls"></div>
                                                      <div class="productTypeLabel">
                                                           <label for="aefMonRent"><colt:content key="request_monthlyRent">Monthly Rent/PSTN</colt:content> :</label>
                                                      </div>
                                                      <div class="addressInput">
                                                           <netui:textBox maxlength="10" tagId="befMonRent" onChange="setFlag()" styleClass="producttype" dataSource="actionForm.mon_rent_after_disc" />
                                                      </div>
                                                      <div class="cls"></div>
                                                      </div>
                                                 </fieldset>
                                                 <div>
                                                      <img src="/coltPortalWeb/framework/skins/coltBaseSkin/images/spacer.gif" alt="spacer" width="1" height="30" />
                                                 </div>
                                            <div class="cls"></div>
                   </div>
         <c:if test="${requestScope.update!=null && requestScope.update eq 'true'}">
                                            <%@ include file="../../jsp/common/comments.jspf" %>
                                       </c:if>
         </div>
    </div>     
              <%@ include file="../../jsp/common/selectLocationHRef.jspf" %></div>
              <c:if test="${!(requestScope.update!=null && requestScope.update eq 'true')}">
                   <div class="ReqButtonContainer salesP5">
              <div class="uaSelectClearSales saverequest">
              <netui:button type="submit" tagId="button2" action="saveBuildingConnectivityRequest">
              <colt:content key="request_Save_Request">Save Request</colt:content>
              </netui:button>
              </div>
                   </div>
              </c:if>
              </div>
              <div class="clear"></div>
              </div>
              <c:if test="${requestScope.update!=null && requestScope.update eq 'true'}">
              <div id="uaStepButtons">
                   <div class="RightButtons">
                   <p>
                   <netui:button tagId="cancel" styleClass="uaButton" type="submit" action="cancelAction" onClick="javascript:return cancelPopup();">
                   <colt:content key="resolve_cancel">Cancel</colt:content></netui:button>
                             <netui:anchor action="saveBuildingConnectivityRequest" formSubmit="true">
                                  <netui:parameter name="update" value="true"></netui:parameter>
                                  <netui:button tagId="save" styleClass="uaButton"><colt:content key="request_I_am_done">I am done</colt:content>
                                  </netui:button>
                             </netui:anchor>
              </p>
                        </div>
                        <div class="LeftButtons"></div>
                   </div>
                   </c:if>
         </netui:form>
              <c:if test="${!(requestScope.update!=null && requestScope.update eq 'true')}">
              <netui:form tagId="buttonForm" action="finalSubmit">
                   <div id="uaStepButtons">
                        <div class="RightButtons">
                   <p>
              <netui:button tagId="cancel" styleClass="uaButton" type="submit" action="cancelAction" onClick="javascript:return cancelPopup();"><colt:content key="request_Cancel_this_opportunity">Cancel this opportunity</colt:content></netui:button>
                             <netui:button tagId="save" styleClass="uaButton" type="submit" action="finalSubmit" onClick="javascript:return saveBeforeExit('${requestScope.POPUP_FLAG}');"><colt:content key="request_I_am_done">I am done</colt:content></netui:button>
              </p>
                        </div>
                        <div class="LeftButtons"></div>
                   </div>
              </netui:form>
              </c:if>
              </div>
         </div>

  • Concat UDF question

    Hi all,
    I  have a requremnt in the map.
    Source looks like this,
    Description (Node) 1-many  >   It has 2 fields in it namely :
    1.  Indicator(String) 0-1
    2. Comment(String) 1
    Now target looks like this
    ProductDescription(Node) 1-many  > it has just 1 node namely :
    1. Comments
    Requirement:
    Map description to target> productDescription as follows:
    1. If(Indicator Doesn't exist ) then map each Description.Comment to ProductDescription.Comment
    Ex: Source
    <Description><Comment>Red hammer</Comment></Description>
    <Description><Comment>Blue hammer</Comment></Description>
    then Target is
    <ProductDescription><Comments>Red hammer</Comments></ProductDescription>
    <ProductDescription><Comments>Blue hammer</Comments></ProductDescription>
    2. If(Indicator equals *) then map the Concat the prev Comment along with the current comment into 1 target "Comments"
    Ex: Source
    <Description><Comment>Red hammer</Comment></Description>
    *<Description><Indicator>(astrix ie )</Indicator><Comment>Red pencil</Comment></Description>
    then Target is
    <ProductDescription><Comments>Red hammer Red pencil</Comments></ProductDescription>
    Can anyone help me in what way i have to approach this to achive the map? In this case a UDF is inevitable is it?
    Any reply / leads is very much appreciated
    Thanks,
    Hank
    Edited by: hankovak jovani on Sep 30, 2009 4:50 AM if Indicator field is * then it indicator that the sender is sending the current comment in a NEW LINE hence have to concat it with the prev one......

    comment(context MT_Src)---->SaveComment(UDF)----->ProductDesc
           indicator--equalS----------------------------->-if---------------------->Map it to Then in the below mapping(say Label)
    sonstant[*]---/      comment--->getPreviousComment-->  then    
                  Label---> then
    indicator---->exist---->if--------------->comment
                comment---> else
    declare a global variable using Edit Java section (one of the  Functions of the Object Toolbar in Mapping Editor )under global variable
    String [ ] comment=new String[20];
    create two UDF
    SaveCommentUDF
       //write your code here
    for(int i=0;i<a.length;i++)
    comment<i>=a<i>;
    result.addValue(a<i>);
    GetPreviousCommentUDF
       //write your code here
    String pre="";
    for(int i=0;i<comment.length;i++)
    if(a.equals(comment<i>))
    pre = comment[i-1];
    return pre+a;

  • C# Update single row in [my]sql

    Hi
    We found after our Bugzilla upgrade that many comment records where not upgraded correctly due to special characters.
    I have found all the old == good and matching new == bad records
    Some of the comments can be up to 64k so I don't want to try to do this as a textual update, rather update the row directly
    I am after hints how to do this ?
    Thanks
    try
    adaptor = new OdbcDataAdapter(_query, _mySQL);
    resultsTable = new DataTable("Results");
    adaptor.Fill(resultsTable);
    adaptorNew = new OdbcDataAdapter(_query, _mySQLNew);
    resultsTableNew = new DataTable("Results");
    adaptorNew.Fill(resultsTableNew);
    //Console.WriteLine("Bug {0} has {1} comments", i, resultsTable.Rows.Count);
    int rowCount = 0;
    foreach (DataRow row in resultsTable.Rows)
    DataRow newrow = resultsTableNew.Rows[rowCount];
    // This checks the comments ids are the same if (row.ItemArray[1].ToString().Equals(newrow.ItemArray[1].ToString()))
    // This checks the comments lengths
    if (!row.ItemArray[2].ToString().Equals(newrow.ItemArray[2].ToString()))
    Console.WriteLine("At id {0}, length differs {1} != {2}", i, row.ItemArray[2].ToString(), newrow.ItemArray[2].ToString());
    // To DO - update new record with old record data
    // xxxx.update (newrow"comment.text") with row"comment.text"
    else
    Console.WriteLine("At id {0}, comment ids do not match", i);
    rowCount++;
    catch
    NB: I tried something like below it did not work
    Over is [MY]SQL it works, e.g.
    update longdescs set thetext='Test by GBR'  where comment_id=625;
    HOWEVER for huge text strings, not sure how to handle ' inside the text
    // this does not work though NO error is reported object[] rowdata = new object[4];
    rowdata[0] = row.ItemArray[0];
    rowdata[1] = row.ItemArray[1];
    rowdata[2] = row.ItemArray[2];
    rowdata[3] = (object)"Test of write"; // row.ItemArray[3];
    resultsTableNew.Rows[rowCount].BeginEdit();
    resultsTableNew.Rows[rowCount].ItemArray = rowdata;
    resultsTableNew.Rows[rowCount].EndEdit();
    resultsTableNew.Rows[rowCount].AcceptChanges();
    resultsTableNew.AcceptChanges();
    And another ps ; No ,matter what ways I use variables @oldtext :oldtext I cant get the var substitution to work  below.
    Outcomes : No row updated, row updated showing nothing or "@oldtext"
    Something like
    "UPDATE longdescs SET thetext = 'my test' WHERE comment_id=123"
    will work
    string updateText = @"UPDATE longdescs SET thetext = @oldtext WHERE comment_id={0}";
    _query2 = string.Format(updateText, row.ItemArray[1]);
    // Set @newtext
    Console.WriteLine("At id {0}={1}, comment id {2}, length differs {3} != {4}", i, row.ItemArray[0].ToString(), row.ItemArray[1].ToString(), row.ItemArray[2].ToString(), newrow.ItemArray[2].ToString());
    if (i == 624)
    OdbcCommand sqlComm = new OdbcCommand(_query2, _mySQLNew);
    sqlComm.Parameters.AddWithValue("@oldtext", "Test by GBR");
    int rowsaffected = sqlComm.ExecuteNonQuery();

    Thanks for the reply. It is not possible to do a sample to show the issue because you need the bugzilla DB. Rather hope this issue rings a bell with someone.
    Row state goes from "Modified" to "Unchanged" after the resultsTableNew.Rows[rowCount].AcceptChanges(); line. No errors.
    Nb: I added "
    Allow User Variables=True;" to the connection string.
    I suspect the issue is related to MySQL quirk perhaps ?
    I am using a 3.51 ODBC connector.
    The direct SQL update "update longdescs set thetext='Test by GBR'  where comment_id=625;"
    works. Trying to use a var on the right hand side does not.
    I expanded the sqlComm object and can see the added parameter in it.
    "UPDATE longdescs SET thetext = @oldtext WHERE comment_id=625";
    Does not work, i.e. I can't get the var to be used. Text size is usually 1k but can get to 60k in a comment.
    >> A manual alternative if someone can suggest how would be fine, as this is a one of fix to 6000 records.  i.e.
    - clear comment field
    - manually add 8K of info (whatever is the OK size) handling any " or ' in the data streams
    - repeat addition of data until comment filled up
    (context bugzilla)
                   _mySQL =
    newOdbcConnection(@"DRIVER={MySQL
    ODBC 3.51 Driver}; SERVER=xxxxx; PORT=3306;
                    DATABASE=bugs; USER=xxx; PASSWORD=xxx; Allow User Variables=True;
    OPTION=0"
                    _mySQL.Open();

Maybe you are looking for