⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syncsync.java

📁 j2me sip客户端程序源码 提供了J2ME中SIP协议开发样例源码
💻 JAVA
字号:
/**
 * @(#)$RCSfile: SyncSync.java,v $            $Revision: 1.2 $
 *
 * ====================================================================
 * Copyright 2001, Reaxion Corp.,
 * 11418 105th PL NE, Kirkland, WA, 98033, USA
 * All rights reserved.
 * ====================================================================
 *
 * The contents of this file are subject to the Mozilla Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is the Tequila SyncML.
 *
 * The Initial Developer of the Original Code is Reaxion Corp.
 * All Rights Reserved.
 */
package com.reaxion.tequila.syncml;

import java.util.*;

import com.reaxion.tequila.syncml.xml.IXMLNode;
import com.reaxion.tequila.syncml.util.*;

/**
 * <!ELEMENT Sync (CmdID, Put?, Target, Source?, (Add | Delete | Replace)*, NoResp?)>
 * <p>
 * <pre>
 *   &lt;Sync&gt;
 *    &lt;CmdID&gt;CmdID (int)&lt;/CmdID&gt;
 *      &lt;Target&gt;
 *          &lt;LocURI&gt;DB Name&lt;/LocURI&gt;
 *          ?&lt;LocName&gt;name&lt;/LocName&gt;
 *      &lt;/Target&gt;
 *      ?&lt;Source&gt;
 *          &lt;LocURI&gt;DB Name&lt;/LocURI&gt;
 *          ?&lt;LocName&gt;name&lt;/LocName&gt;
 *      &lt;/Source&gt;
 *      ?&lt;Put&gt;...&lt;/Put&gt;
 *      *&lt;Add&gt;&lt;/Add&gt;
 *    *&lt;Delete&gt;&lt;/Delete&gt;
 *    *&lt;Replace&gt;&lt;/Replace&gt;
 *  &lt;/Sync&gt;
 * </pre>
 *
 * @version   $1.0$
 * @author    Oleg A. Oksyuk
 */
public class SyncSync extends SyncTargetOwner {

    private SyncPut put;
    private SyncSource source;
    private Vector commands = new Vector();

    public SyncSync(IXMLNode el)
    {
        super(el, new SyncTarget(el.getChild(SyncCommandNames.TARGET)));
        IXMLNode child = el.getChild(SyncCommandNames.PUT);
        put = (child != null) ? new SyncPut(child) : null;
        child = el.getChild(SyncCommandNames.SOURCE);
        source = (child != null) ? new SyncSource(child) : null;

        Enumeration en = el.getChildren();
        while (en.hasMoreElements())
        {
            child = (IXMLNode) en.nextElement();
            if (SyncCommandNames.ADD.equals(child.getName()))
            {
                addCommand(new SyncAdd(child));
            }
            else if (SyncCommandNames.DELETE.equals(child.getName()))
            {
                addCommand(new SyncDelete(child));
            }
            else if (SyncCommandNames.REPLACE.equals(child.getName()))
            {
                addCommand(new SyncReplace(child));
            }
        }
    }

    public SyncSync(SyncCmdId cmdId, SyncTarget pTarget, SyncSource pSource, SyncPut pPut, boolean isNoResp)
    {
        super(SyncCommandNames.SYNC, cmdId, pTarget, isNoResp);
        source = pSource;
        put = pPut;
    }

    public SyncSync(SyncTarget pTarget, SyncSource pSource, SyncPut pPut, boolean isNoResp)
    {
        super(SyncCommandNames.SYNC, SyncCommandNames.DEF.EMPTY_CMD_ID, pTarget, isNoResp);
        source = pSource;
        put = pPut;
    }

    public void addCommand(SyncSyncCommand command)
    {
        if ((command instanceof SyncAdd)
                || (command instanceof SyncDelete)
                || (command instanceof SyncReplace)) {
            commands.addElement(command);
        } else {
            throw new SyncMLDocStructureException(command.getName()+" command could be added to Sync");
        }
    }

    public Enumeration getCommands()
    {
        return commands.elements();
    }
    public SyncPut getPut()
    {
        return put;
    }
    public SyncSource getSource()
    {
        return source;
    }

    public Object getElData(int level)
    {
		StringBuffer res = new StringBuffer();
        res.append(getCmdId().toString(level+1));
        if (isNoResp())
        {
            res.append(SyncCommandNames.DEF.SYNC_NO_RESP.toString(level+1));
        }
        res.append(getTarget().toString(level+1));
        if (source != null)
        {
            res.append(source.toString(level+1));
        }
        if (put != null)
        {
            res.append(put.toString(level+1));
        }
        Enumeration comEn = getCommands();
        SyncCommand comm;
        while (comEn.hasMoreElements())
        {
            comm = (SyncCommand) comEn.nextElement();
            res.append(comm.toString(level+1));
        }
		return res;
    }

    /**
     * @return  true if Sync has no Put command.
     */
    public boolean isPureSync()
    {
        return (null == put);
    }

    /**
     * @return  true if Sync has only one command - Put.
     */
    public boolean isPurePut()
    {
        return ((null != put) && (commands.isEmpty()));
    }
}

/* -----------------------------------------------------------------------------
 * Change log:
 * -----------------------------------------------------------------------------
 * $Log: SyncSync.java,v $
 * Revision 1.2  2001/10/17 15:27:43  OlegO
 * changed comments for better javadoc
 *
 * Revision 1.1.1.1  2001/10/11 13:13:32  OlegO
 * no message
 *
 * Revision 1.2  2001/07/27 07:41:18  OlegO
 * no message
 *
 */

⌨️ 快捷键说明

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