edu.indiana.soic.ts.mapreduce.pwd.SWGWritable.java Source code

Java tutorial

Introduction

Here is the source code for edu.indiana.soic.ts.mapreduce.pwd.SWGWritable.java

Source

/**
 * Software License, Version 1.0
 * 
 * Copyright 2003 The Trustees of Indiana University.  All rights reserved.
 * 
 *
 *Redistribution and use in source and binary forms, with or without 
 *modification, are permitted provided that the following conditions are met:
 *
 *1) All redistributions of source code must retain the above copyright notice,
 * the list of authors in the original source code, this list of conditions and
 * the disclaimer listed in this license;
 *2) All redistributions in binary form must reproduce the above copyright 
 * notice, this list of conditions and the disclaimer listed in this license in
 * the documentation and/or other materials provided with the distribution;
 *3) Any documentation included with all redistributions must include the 
 * following acknowledgement:
 *
 *"This product includes software developed by the Community Grids Lab. For 
 * further information contact the Community Grids Lab at 
 * http://communitygrids.iu.edu/."
 *
 * Alternatively, this acknowledgement may appear in the software itself, and 
 * wherever such third-party acknowledgments normally appear.
 * 
 *4) The name Indiana University or Community Grids Lab or NaradaBrokering, 
 * shall not be used to endorse or promote products derived from this software 
 * without prior written permission from Indiana University.  For written 
 * permission, please contact the Advanced Research and Technology Institute 
 * ("ARTI") at 351 West 10th Street, Indianapolis, Indiana 46202.
 *5) Products derived from this software may not be called NaradaBrokering, 
 * nor may Indiana University or Community Grids Lab or NaradaBrokering appear
 * in their name, without prior written permission of ARTI.
 * 
 *
 * Indiana University provides no reassurances that the source code provided 
 * does not infringe the patent or any other intellectual property rights of 
 * any other entity.  Indiana University disclaims any liability to any 
 * recipient for claims brought by any other entity based on infringement of 
 * intellectual property rights or otherwise.  
 *
 *LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO 
 *WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA UNIVERSITY GIVES
 *NO WARRANTIES AND MAKES NO REPRESENTATION THAT SOFTWARE IS FREE OF 
 *INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS. 
 *INDIANA UNIVERSITY MAKES NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS", 
 *"VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE.  
 *LICENSEE ASSUMES THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR 
 *ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION 
 *GENERATED USING SOFTWARE.
 */

package edu.indiana.soic.ts.mapreduce.pwd;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

import org.apache.hadoop.io.Writable;

public class SWGWritable implements Writable {

    private long rowBlock, columnBlock, blockSize;

    private short[][] alignments;

    private DataInput dataInput;

    boolean isInverse = false;

    public SWGWritable() {
    }

    // we need to keep track of the max
    private double max;

    public SWGWritable(long rowBlock, long columnBlock, long blockSize, boolean isInverse) {
        this.rowBlock = rowBlock;
        this.columnBlock = columnBlock;
        this.blockSize = blockSize;
        this.isInverse = isInverse;
    }

    public void readFields(DataInput in) throws IOException {
        rowBlock = in.readLong();
        columnBlock = in.readLong();
        blockSize = in.readLong();
        max = in.readDouble();
        dataInput = in;
    }

    public void write(DataOutput out) throws IOException {
        out.writeLong(rowBlock);
        out.writeLong(columnBlock);
        out.writeLong(blockSize);
        out.writeDouble(max);
        if (isInverse) {
            serializeArrayInverse(out);
        } else {
            serializeArray(out);
        }
    }

    private void serializeArray(DataOutput out) throws IOException {
        for (int i = 0; i < alignments.length; i++) {
            for (int j = 0; j < alignments[0].length; j++) {
                out.writeShort(alignments[i][j]);
            }
        }
    }

    private void serializeArrayInverse(DataOutput out) throws IOException {
        for (int j = 0; j < alignments[0].length; j++) {
            for (int i = 0; i < alignments.length; i++) {
                out.writeShort(alignments[i][j]);
                //            out.writeBytes(alignments[i][j]+""); //debug
            }
        }
    }

    public short[] readRow() throws IOException {
        short[] row = new short[(int) blockSize];
        for (int i = 0; i < blockSize; i++) {
            row[i] = dataInput.readShort();
        }
        return row;
    }

    public double getMax() {
        return max;
    }

    public void setMax(double max) {
        this.max = max;
    }

    public long getRowBlock() {
        return rowBlock;
    }

    public void setRowBlock(long rowBlock) {
        this.rowBlock = rowBlock;
    }

    public long getColumnBlock() {
        return columnBlock;
    }

    public void setColumnBlock(long columnBlock) {
        this.columnBlock = columnBlock;
    }

    public long getBlockSize() {
        return blockSize;
    }

    public void setBlockSize(long blockSize) {
        this.blockSize = blockSize;
    }

    public void setAlignments(short[][] alignments) {
        this.alignments = alignments;
    }

    public DataInput getDataInput() {
        return dataInput;
    }
}