2022-11-30 11:11:23 -05:00

106 lines
2.9 KiB
Java
Executable File

package com.reandroid.lib.arsc.value;
import com.reandroid.lib.arsc.base.Block;
import com.reandroid.lib.arsc.base.BlockCounter;
import com.reandroid.lib.arsc.io.BlockReader;
import com.reandroid.lib.arsc.item.IntegerItem;
import com.reandroid.lib.arsc.item.PackageName;
import com.reandroid.lib.json.JsonItem;
import org.json.JSONObject;
import java.io.IOException;
import java.io.OutputStream;
public class LibraryInfo extends Block implements JsonItem<JSONObject> {
private final IntegerItem mPackageId;
private final PackageName mPackageName;
public LibraryInfo(){
super();
this.mPackageId=new IntegerItem();
this.mPackageName=new PackageName();
mPackageId.setIndex(0);
mPackageId.setParent(this);
mPackageName.setIndex(1);
mPackageName.setParent(this);
}
public int getPackageId(){
return mPackageId.get();
}
public void setPackageId(int id){
mPackageId.set(id);
}
public String getPackageName(){
return mPackageName.get();
}
public void setPackageName(String packageName){
mPackageName.set(packageName);
}
@Override
public byte[] getBytes() {
if(isNull()){
return null;
}
return addBytes(mPackageId.getBytes(), mPackageName.getBytes());
}
@Override
public int countBytes() {
if(isNull()){
return 0;
}
return mPackageId.countBytes()+mPackageName.countBytes();
}
@Override
public void onCountUpTo(BlockCounter counter) {
if(counter.FOUND){
return;
}
if(counter.END==this){
counter.FOUND=true;
return;
}
mPackageId.onCountUpTo(counter);
mPackageName.onCountUpTo(counter);
}
@Override
protected int onWriteBytes(OutputStream stream) throws IOException {
int result=mPackageId.writeBytes(stream);
result+=mPackageName.writeBytes(stream);
return result;
}
@Override
public void onReadBytes(BlockReader reader) throws IOException{
mPackageId.readBytes(reader);
mPackageName.readBytes(reader);
}
@Override
public JSONObject toJson() {
JSONObject jsonObject=new JSONObject();
jsonObject.put("id", getPackageId());
jsonObject.put("name", getPackageName());
return jsonObject;
}
@Override
public void fromJson(JSONObject json) {
setPackageId(json.getInt("id"));
setPackageName(json.getString("name"));
}
@Override
public String toString(){
StringBuilder builder=new StringBuilder();
builder.append("LIBRARY{");
builder.append(String.format("0x%02x", getPackageId()));
builder.append(':');
String name=getPackageName();
if(name==null){
name="NULL";
}
builder.append(name);
builder.append('}');
return builder.toString();
}
}