Pages

Wednesday, 23 May 2012

Sample Sax Handler

public class CarDetailsHandler extends DefaultHandler {

private Company company = null;
private Category category = null;
private Model model = null;
private ModelInfo modelInfo = null;
private EngineInfo engineInfo = null;
private BreakInfo breakInfo = null;
private StringBuffer buffer = null;
private List<Model> models = null;
private List<Category> categories = null;
private StandardFeatures standardFeatures;
private static CarDetailsHandler carDetailsHandler = null;

private CarDetailsHandler() {

}

public static CarDetailsHandler getInstance() {
if (carDetailsHandler == null) {
carDetailsHandler = new CarDetailsHandler();
}

return carDetailsHandler;
}

public Company getDetails() {

return company;
}

@Override
public void startDocument() throws SAXException {
company = new Company();
categories = new ArrayList<Category>();
}

@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
buffer = new StringBuffer();
System.out.println("now it's in start menthd");
if (localName.equalsIgnoreCase("category")) {
category = new Category();
models = new ArrayList<Model>();

} else if (localName.equalsIgnoreCase("model")) {
model = new Model();

} else if (localName.equalsIgnoreCase("info")) {
modelInfo = new ModelInfo();

} else if (localName.equalsIgnoreCase("engine")) {
engineInfo = new EngineInfo();

} else if (localName.equalsIgnoreCase("break")) {
breakInfo = new BreakInfo();

} else if (localName.equalsIgnoreCase("standardfeatures")) {
 standardFeatures = new StandardFeatures();

}

// Get the number of attribute
int length = attributes.getLength();

// Process each attribute
for (int i = 0; i < length; i++) {
// Get names and values for each attribute
String name = attributes.getQName(i);
String value = attributes.getValue(i);

if (localName.equalsIgnoreCase("company")
&& name.equalsIgnoreCase("name")) {
company.setName(value);

} else if (localName.equalsIgnoreCase("category")
&& name.equalsIgnoreCase("name")) {
category.setName(value);

} else if (localName.equalsIgnoreCase("model")
&& name.equalsIgnoreCase("name")) {
model.setName(value);

} else if (localName.equalsIgnoreCase("engine")) {
if (name.equalsIgnoreCase("type")) {
engineInfo.setEngineType(value);

} else if (name.equalsIgnoreCase("cc")) {
engineInfo.setEngineCC(value);

} else if (name.equalsIgnoreCase("fuelefficiency")) {
engineInfo.setFuelEfficiency(value);

}
} else if (localName.equalsIgnoreCase("break")) {
if (name.equalsIgnoreCase("front")) {
breakInfo.setFront(value);

} else if (name.equalsIgnoreCase("rear")) {
breakInfo.setRear(value);

}
}

}
}

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {

if (buffer != null) {
buffer.append(ch, start, length);

}
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (localName.equalsIgnoreCase("company")) {
company.setCategories(categories);
} else if (localName.equalsIgnoreCase("category")) {
category.setModels(models);
models = null;
categories.add(category);
category = null;

} else if (localName.equalsIgnoreCase("model")) {
System.out.println("model going to end");
models.add(model);
model = null;

} else if (localName.equalsIgnoreCase("description")) {
category.setDescription(buffer.toString());
} else if (localName.equalsIgnoreCase("image")) {
model.setImage(buffer.toString());

} else if (localName.equalsIgnoreCase("price")) {
model.setPrice(buffer.toString());

} else if (localName.equalsIgnoreCase("info")) {
model.setModelInfo(modelInfo);
modelInfo = null;

} else if (localName.equalsIgnoreCase("engine")) {
modelInfo.setEngineInfo(engineInfo);
engineInfo = null;

} else if (localName.equalsIgnoreCase("transmission")) {
modelInfo.setTransmission(buffer.toString());

} else if (localName.equalsIgnoreCase("steering")) {
modelInfo.setSteering(buffer.toString());

} else if (localName.equalsIgnoreCase("doors")) {
modelInfo.setDoors(buffer.toString());

} else if (localName.equalsIgnoreCase("break")) {
modelInfo.setBreakesInfo(breakInfo);

} else if (localName.equalsIgnoreCase("highlights")) {
model.setHighlights(buffer.toString());
} else if (localName.equalsIgnoreCase("standardfeatures")) {
model.setStandardFeatures(standardFeatures);
standardFeatures = null;


} else if (localName.equalsIgnoreCase("exterior")) {
standardFeatures.setExterior(buffer.toString());
} else if (localName.equalsIgnoreCase("interior")) {
standardFeatures.setInterior(buffer.toString());
} else if (localName.equalsIgnoreCase("comfort")) {
standardFeatures.setComfort(buffer.toString());
} else if (localName.equalsIgnoreCase("safety")) {
standardFeatures.setSafety(buffer.toString());
}

}
}

No comments:

Post a Comment