package tk.djcrazy.MyCC98.template;
import java.io.IOException;
import java.util.List;
import tk.djcrazy.MyCC98.util.StreamUtils;
import tk.djcrazy.libCC98.data.PostContentEntity;
import tk.djcrazy.libCC98.util.DateFormatUtil;
import android.content.Context;
import android.util.Log;
public class DefaultPostContentTemplate implements PostcontentTemplate {
private static PostcontentTemplate template = new DefaultPostContentTemplate();
private static String mContent;
private static String start;
private static String middle ;
private static String last ;
public static PostcontentTemplate getInstance() {
return template;
}
@Override
public String genContent(Context context, List<PostContentEntity> list ,int page) {
prepareContent(context);
StringBuilder builder= new StringBuilder();
builder.append(start);
for (int i = 1; i < list.size(); i++) {
PostContentEntity entity = list.get(i);
builder.append(middle);
replaceVariable("${title}", builder, entity.getPostTitle());
replaceVariable("${avatar}", builder, entity.getUserAvatarLink());
replaceVariable("${author}", builder, entity.getUserName());
replaceVariable("${floor}", builder, ((page - 1) * 10 + i)+" 楼");
replaceVariable("${gender}", builder, entity.getGender().getName());
replaceVariable("${time}", builder,DateFormatUtil.convertDateToString(entity.getPostTime(), true));
replaceVariable("${face}", builder, entity.getPostFace());
replaceVariable("${content}", builder, entity.getPostContent());
replaceVariable("${i}", builder, String.valueOf(i));
}
builder.append(last);
return builder.toString();
}
private void replaceVariable(String var, StringBuilder builder, String newContent) {
int offset = builder.indexOf(var);
builder.replace(offset, offset+var.length(), newContent);
}
/**
* @param context
*/
private void prepareContent(Context context) {
if (mContent==null) {
try {
mContent = StreamUtils.Stream2String(context.getAssets().open("template/default_post_content_template.html"));
start = mContent.substring(0, mContent.indexOf("$foreach$"));
middle = mContent.substring(mContent.indexOf("$foreach$")+9, mContent.indexOf("$endeach$"));
last = mContent.substring(mContent.indexOf("$endeach$")+9);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
}
}