package com.manning.hip.ch3.passwd; import org.apache.commons.lang.builder.CompareToBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.hadoop.io.WritableComparable; import org.apache.hadoop.io.WritableUtils; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; public class Passwd implements WritableComparable<Passwd>, Cloneable { String username; String password; Long uid; Long gid; String uidInfo; String homeDir; String shell; public Passwd() { } public Passwd(String username, String password, Long uid, Long gid, String uidInfo, String homeDir, String shell) { this.username = username; this.password = password; this.uid = uid; this.gid = gid; this.uidInfo = uidInfo; this.homeDir = homeDir; this.shell = shell; } @Override public void write(DataOutput out) throws IOException { WritableUtils.writeString(out, username); WritableUtils.writeString(out, password); writeLong(out, uid); writeLong(out, gid); WritableUtils.writeString(out, uidInfo); WritableUtils.writeString(out, homeDir); WritableUtils.writeString(out, shell); } @Override public void readFields(DataInput in) throws IOException { username = WritableUtils.readString(in); password = WritableUtils.readString(in); uid = readLong(in); gid = readLong(in); uidInfo = WritableUtils.readString(in); homeDir = WritableUtils.readString(in); shell = WritableUtils.readString(in); } public static void writeLong(DataOutput out, Long i) throws IOException { // WritableUtils only support primivite types out.writeBoolean(i != null); if (i != null) { WritableUtils.writeVLong(out, i); } } public static Long readLong(DataInput in) throws IOException { Long i = null; if(in.readBoolean()) { i = WritableUtils.readVLong(in); } return i; } @Override public int compareTo(Passwd passwd) { return CompareToBuilder.reflectionCompare(this, passwd); } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Long getUid() { return uid; } public void setUid(Long uid) { this.uid = uid; } public Long getGid() { return gid; } public void setGid(Long gid) { this.gid = gid; } public String getUidInfo() { return uidInfo; } public void setUidInfo(String uidInfo) { this.uidInfo = uidInfo; } public String getHomeDir() { return homeDir; } public void setHomeDir(String homeDir) { this.homeDir = homeDir; } public String getShell() { return shell; } public void setShell(String shell) { this.shell = shell; } }