package org.docx4j.openpackaging.parts.SpreadsheetML;
import org.docx4j.openpackaging.contenttype.ContentTypes;
import org.docx4j.openpackaging.exceptions.InvalidFormatException;
import org.docx4j.openpackaging.exceptions.PartUnrecognisedException;
import org.docx4j.openpackaging.parts.JaxbXmlPartXPathAware;
import org.docx4j.openpackaging.parts.Part;
import org.docx4j.openpackaging.parts.PartName;
import org.xlsx4j.jaxb.Context;
public abstract class JaxbSmlPart<E> extends JaxbXmlPartXPathAware<E> {
public JaxbSmlPart(PartName partName) throws InvalidFormatException {
super(partName);
setJAXBContext(Context.jcSML);
}
public JaxbSmlPart() throws InvalidFormatException {
super(new PartName("/xl/blagh.xml"));
setJAXBContext(Context.jcSML);
}
public static Part newPartForContentType(String contentType, String partName)
throws InvalidFormatException, PartUnrecognisedException {
if (contentType.equals(ContentTypes.SPREADSHEETML_PRINTER_SETTINGS)) {
return new PrinterSettings(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_STYLES)) {
return new Styles(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_WORKSHEET)) {
return new WorksheetPart(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_CALC_CHAIN)) {
return new CalcChain(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_SHARED_STRINGS)) {
return new SharedStrings(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_PIVOT_TABLE)) {
return new PivotTable(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_PIVOT_CACHE_DEFINITION)) {
return new PivotCacheDefinition(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_PIVOT_CACHE_RECORDS)) {
return new PivotCacheRecords(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_COMMENTS)) {
return new CommentsPart(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_CONNECTIONS)) {
return new ConnectionsPart(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_TABLE)) {
return new TablePart(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_QUERY_TABLE)) {
return new QueryTablePart(new PartName(partName));
} else if (contentType.equals(ContentTypes.SPREADSHEETML_EXTERNAL_LINK)) {
return new ExternalLinkPart(new PartName(partName));
} else {
throw new PartUnrecognisedException("No subclass found for "
+ partName + " (content type '" + contentType + "')");
}
}
}