将Json格式的拍拍区域js文件转换为insert...格式的sql文件

拍拍区域js文件网址:[url]http://static.paipaiimg.com/js/regiondata.js?t=20091111[/url]

树形结构网址:[url]http://pop.paipai.com/resources/address.html[/url]

需取出js文件中的Json数据,不能直接使用js文件。

代码如下:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;

import com.winxuan.paipai.domain.area.PaipaiArea;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
* 将拍拍Json格式的js文件转换为insert...格式的sql文件
*
* @author qiaoyao
* @version 1.0,2010-6-13
*/
public class PaipaiAreaTest {

private static final String insertNoParent = "insert into paipai_area(id,name,available) values(%d,'%s',1);";
private static final String insertWidthParent = "insert into paipai_area(id,name,available,parent) values(%d,'%s',1,%d);";
private static BufferedWriter output;

public static void main(String[] args) throws IOException {
output = new BufferedWriter(new FileWriter("d:/sql_area.txt"));
getArea(JsonConvertTestUtils.JSON_AREA, null);
output.close();
System.out.println("生成d:/sql_area.txt成功!!!");
}

@SuppressWarnings("unchecked")
public static void getArea(String str, PaipaiArea parent) {
JSONObject jsonCountry = JSONObject.fromObject(str);
Iterator<?> iteratorProvince = jsonCountry.entrySet().iterator();
PaipaiArea area;
while (iteratorProvince.hasNext()) {
area = new PaipaiArea();
Map.Entry<String, JSONArray> mapProvince = (Map.Entry<String, JSONArray>) iteratorProvince
.next();
area.setParent(parent);
area.setId(new Integer(mapProvince.getKey()));
JSONArray jsonArray = mapProvince.getValue();
if (jsonArray.size() > 0) {
area.setName(jsonArray.get(0).toString());

printInsertSql(area);

if (jsonArray.size() > 2) {
getArea(jsonArray.get(2).toString(), area);
}
}
}
}

public static void printInsertSql(PaipaiArea area) {
String result = "";
if (area.getParent() != null) {
result = String.format(insertWidthParent, area.getId(), area
.getName(), area.getParent().getId());
} else {
result = String
.format(insertNoParent, area.getId(), area.getName());
}

try {
output.write(result + "\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}



import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

/**
* Json格式数据常量类
*
* @author qiaoyao
* @version 1.0,2010-6-2
*/
public class JsonConvertTestUtils {

public static String JSON_ORDER_LIST = "";
public static String JSON_ORDER = "";

public static String JSON_ITEM_LIST = "";
public static String JSON_ITEM = "";

public static String JSON_AREA = "";

static {

try {
String currentPath = "d:/temp";
JSON_ORDER_LIST = readerFile(currentPath + "/orderList.txt");
JSON_ORDER = readerFile(currentPath + "/order.txt");
JSON_ITEM = readerFile(currentPath + "/item.txt");
JSON_AREA = readerFile(currentPath + "/area.txt");
} catch (IOException e) {
e.printStackTrace();
}
}

public static String readerFile(String path) throws IOException {
BufferedReader reader = null;
StringBuffer sb = new StringBuffer();
reader = new BufferedReader(new InputStreamReader(new FileInputStream(
path), Charset.forName("gbk")));
String tempString = "";
while ((tempString = reader.readLine()) != null) {
sb.append(tempString);
}
return sb.toString();
}

}



import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import com.xhbs.b2c.domain.codetable.Area;

/**
* Paipai区域对象
*
* @author qiaoyao
* @version 1.0,2010-6-13
*/

@Entity
@Table(name = "paipai_area")
public class PaipaiArea {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@Column(name = "name")
private String name;

@Column(name = "description")
private String description;

@Column(name = "available")
private boolean available;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent")
private PaipaiArea parent;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.LAZY, targetEntity = PaipaiArea.class)
private Set<PaipaiArea> children;

@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.PERSIST }, targetEntity = Area.class)
@JoinTable(name = "paipai_areamapping", joinColumns = { @JoinColumn(name = "_paipaiarea") }, inverseJoinColumns = { @JoinColumn(name = "_b2carea") })
private Area area;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public boolean isAvailable() {
return available;
}

public void setAvailable(boolean available) {
this.available = available;
}

public PaipaiArea getParent() {
return parent;
}

public void setParent(PaipaiArea parent) {
this.parent = parent;
}

public Set<PaipaiArea> getChildren() {
return children;
}

public void setChildren(Set<PaipaiArea> children) {
this.children = children;
}

public Area getArea() {
return area;
}

public void setArea(Area area) {
this.area = area;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值