Added support for embedded descriptions
This commit is contained in:
parent
2cdba9062e
commit
5cd19480ad
22 changed files with 889 additions and 333 deletions
|
@ -0,0 +1,71 @@
|
|||
package net.vhati.modmanager.json;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.vhati.modmanager.core.ModsInfo;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
|
||||
|
||||
public class JacksonCatalogWriter {
|
||||
|
||||
/**
|
||||
* Writes collated catalog entries to a file, as condensed json.
|
||||
*/
|
||||
public static void write( List<ModsInfo> modsInfoList, File dstFile ) throws IOException {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
ObjectNode rootNode = mapper.createObjectNode();
|
||||
|
||||
ObjectNode catalogsNode = rootNode.objectNode();
|
||||
rootNode.put( "catalog_versions", catalogsNode );
|
||||
|
||||
ArrayNode catalogNode = rootNode.arrayNode();
|
||||
catalogsNode.put( "1", catalogNode );
|
||||
|
||||
for ( ModsInfo modsInfo : modsInfoList ) {
|
||||
ObjectNode infoNode = rootNode.objectNode();
|
||||
catalogNode.add( infoNode );
|
||||
|
||||
infoNode.put( "title", modsInfo.getTitle() );
|
||||
infoNode.put( "author", modsInfo.getAuthor() );
|
||||
infoNode.put( "desc", modsInfo.getDescription() );
|
||||
infoNode.put( "url", modsInfo.getThreadURL() );
|
||||
|
||||
infoNode.put( "thread_hash", modsInfo.threadHash );
|
||||
|
||||
ArrayNode versionsNode = rootNode.arrayNode();
|
||||
infoNode.put( "versions", versionsNode );
|
||||
|
||||
for ( Map.Entry<String,String> entry : modsInfo.getVersionsMap().entrySet() ) {
|
||||
String versionFileHash = entry.getKey();
|
||||
String versionString = entry.getValue();
|
||||
|
||||
ObjectNode versionNode = rootNode.objectNode();
|
||||
versionNode.put( "hash", versionFileHash );
|
||||
versionNode.put( "version", versionString );
|
||||
versionsNode.add( versionNode );
|
||||
}
|
||||
}
|
||||
|
||||
OutputStream os = null;
|
||||
try {
|
||||
os = new FileOutputStream( dstFile );
|
||||
OutputStreamWriter writer = new OutputStreamWriter( os, Charset.forName("US-ASCII") );
|
||||
mapper.writeValue( writer, rootNode );
|
||||
}
|
||||
finally {
|
||||
try {if ( os != null ) os.close();}
|
||||
catch ( IOException e ) {}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,8 +2,6 @@ package net.vhati.modmanager.json;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import net.vhati.modmanager.core.ModDB;
|
||||
import net.vhati.modmanager.core.ModInfo;
|
||||
|
@ -63,7 +61,7 @@ public class JacksonGrognakCatalogReader {
|
|||
exception = e;
|
||||
}
|
||||
if ( exception != null ) {
|
||||
log.error( exception );
|
||||
log.error( String.format( "While processing \"%s\", json parsing failed: %s", jsonFile.getName(), exception.getMessage() ), exception );
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue