linkdata.java

来自「一个日本流行的,功能较全的开源Web办公管理(Groupware)系统。」· Java 代码 · 共 160 行

JAVA
160
字号
package jp.co.sjts.gsession.link;

/*
 * 儕儞僋僨乕僞  LinkData.java
 * Copyright (C) 1999-2000 Japan Total System Co,LTD
 *    Satoru K  <koni@sjts.co.jp>
 */

import java.io.File;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Set;
import java.util.Map;
import java.util.HashMap;
import java.util.Collections;
import java.util.Collection;
import java.util.Iterator;
import jp.co.sjts.gsession.tools.*;

public class LinkData extends GSTextFile
{
	class LinkInfo{
		int linkId=0;				// 儕儞僋ID
		String url = null;			// 儕儞僋愭URL
		String msg = null;			// 旛峫

		LinkInfo(int linkId,String url,String msg){
			this.linkId = linkId;
			this.url = url;
			this.msg = msg;
		}
	}

	private File file=null;
	private Map linkMap = null;		// 儕儞僋忣曬攝楍

	// 僐儞僗僩儔僋僞
	public LinkData(String dir,int DirId) throws GSException
	{
		File dirfile = new File(dir);

		// 僨傿儗僋僩儕偑懚嵼偟側偄応崌偼,怴婯偵嶌惉偡傞丅
		if(!dirfile.exists())
			dirfile.mkdirs();

		file = new File(dirfile,Integer.toString(DirId));

		linkMap = Collections.synchronizedMap(new HashMap());
		if(!file.exists())
			Save();
	}

	protected File GetFile()
	{
		return file;
	}

	// 僨乕僞偺撉崬傒
	synchronized protected void Read(BufferedReader bf)
		throws GSException
	{
		try {
			linkMap.clear();
			String buf = bf.readLine();
			while(buf!=null){
				StringTokenizer st = new StringTokenizer(buf,";");
				Integer linkId = new Integer(st.nextToken());
				String url = st.nextToken();
				String msg = "丂";
				if(st.hasMoreTokens())
					msg = st.nextToken();
				linkMap.put(linkId,new LinkInfo(linkId.intValue(),url,GSHtml.BRtoReturn(msg)));
				buf = bf.readLine();
			}

		} catch(IOException e){
			throw new GSException("IO僄儔乕",e);
		}
	}

	// 僨乕僞偺彂弌偟
	synchronized protected void Write(PrintWriter pw)
		throws GSException
	{
		Collection cl = linkMap.values();
		Iterator it = cl.iterator();
		while(it.hasNext()){
			LinkInfo li = (LinkInfo)it.next();
			pw.println(Integer.toString(li.linkId)+";"+li.url+";"+GSHtml.ReturntoBR(li.msg));
		}
	}

	synchronized int[] getLinkIDs()
		throws GSException
	{

		Set key = linkMap.keySet();

		if(key.size()<=0)
			return null;

		int[] lIds = new int[key.size()];
		Iterator it = key.iterator();
		for(int i=0;it.hasNext();i++)
			lIds[i] = ((Integer)it.next()).intValue();

		return lIds;
	}

	synchronized String getLinkMsg(int id)
		throws GSException
	{
		LinkInfo li = (LinkInfo)linkMap.get(new Integer(id));
		return li.msg;
	}

	synchronized String getLinkUrl(int id)
		throws GSException
	{
		LinkInfo li = (LinkInfo)linkMap.get(new Integer(id));
		return li.url;
	}

	// 怴婯儕儞僋搊榐
	synchronized void addLink(int linkId,String address,String memo)
		throws GSException
	{

		LinkInfo link = new LinkInfo(linkId,address,memo);
		linkMap.put(new Integer(linkId),link);
	}

	// 儕儞僋偺嶍彍
	synchronized void delLink(int linkId)
		throws GSException
	{
		LinkInfo linkInfo = (LinkInfo)linkMap.get(new Integer(linkId));
		if(linkInfo==null)
			return;

		linkMap.remove(new Integer(linkId));
	}

	// 儕儞僋曇廤
	synchronized void editLink(int linkId,String url,String msg)
		throws GSException
	{
		LinkInfo linkInfo = (LinkInfo)linkMap.get(new Integer(linkId));
		if(linkInfo==null)
			return;

		linkInfo.url = url;
		linkInfo.msg = msg;
	}
	
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?