Package org.w3c.tools.resources.upgrade

Source Code of org.w3c.tools.resources.upgrade.SegmentArrayAttribute

// SegmentArrayAttribute.java
// $Id: SegmentArrayAttribute.java,v 1.4 2000/08/16 21:37:56 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1996.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.tools.resources.upgrade ;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.w3c.util.CountOutputStream;
import org.w3c.jigsaw.ssi.Segment;

/**
* Attribute used to make the document segment information persistent.
* @author Antonio Ramirez <anto@mit.edu>
*/
class SegmentArrayAttribute extends Attribute {

    public boolean checkValue(Object value)
    {
  return (value instanceof Segment[] || value == null);
    }

    /**
     * Get the number of bytes required to save that attribute value.
     * @param The value about to be pickled.
     * @return The number of bytes needed to pickle that value.
     */

    public final int getPickleLength(Object value) {
  CountOutputStream out  = new CountOutputStream();
  DataOutputStream  dout = new DataOutputStream(out);
  Segment           ss[] = (Segment[]) value;
  try {
      pickle(dout, ss);
      dout.close();
      return out.getCount();
  } catch (IOException ex) {
      throw new RuntimeException("IO erred in CountOutputStream.");
  }
    }

    public void pickle(DataOutputStream out,Object obj)
  throws IOException
    {
  Segment[] segs = (Segment[]) obj ;
  out.writeInt(segs.length);
  for(int i=0;i<segs.length;i++)
      segs[i].pickle(out) ;
    }

    public Object unpickle(DataInputStream in)
  throws IOException
    {
  int n = in.readInt() ;
 
  Segment segs[] = new Segment [n] ;

  for(int i=0;i<n;i++)
      segs[i] = Segment.unpickle(in) ;
 
  return segs ;
    }

    public SegmentArrayAttribute(String name, Segment[] def, Integer flags)
    {
  super(name,def,flags) ;
  this.type = "[Lorg.w3c.jigsaw.ssi.Segment;";
    }

    public String stringify(Object value)
    {
  Segment[] segs = (Segment[]) value ;
  StringBuffer buf = new StringBuffer(160) ;
  buf.append('[') ;
  for(int i=0;i<segs.length;i++) {
      buf.append(segs[i].toString()) ;
      buf.append(' ') ;
  }
  buf.append(']') ;
  return buf.toString() ;
    }
}
TOP

Related Classes of org.w3c.tools.resources.upgrade.SegmentArrayAttribute

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.