DiscoverInfoBuilder.java

  1. /**
  2.  *
  3.  * Copyright 2019-2020 Florian Schmaus
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *     http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package org.jivesoftware.smackx.disco.packet;

  18. import java.util.ArrayList;
  19. import java.util.Collection;
  20. import java.util.List;

  21. import org.jivesoftware.smack.XMPPConnection;
  22. import org.jivesoftware.smack.packet.IQ;
  23. import org.jivesoftware.smack.packet.IqBuilder;
  24. import org.jivesoftware.smack.packet.IqData;

  25. import org.jivesoftware.smackx.disco.packet.DiscoverInfo.Feature;
  26. import org.jivesoftware.smackx.disco.packet.DiscoverInfo.Identity;

  27. public class DiscoverInfoBuilder extends IqBuilder<DiscoverInfoBuilder, DiscoverInfo>
  28.         implements DiscoverInfoView {

  29.     private final List<Feature> features = new ArrayList<>();
  30.     private final List<Identity> identities = new ArrayList<>();

  31.     private String node;

  32.     DiscoverInfoBuilder(IqData iqCommon) {
  33.         super(iqCommon);
  34.     }

  35.     DiscoverInfoBuilder(XMPPConnection connection) {
  36.         super(connection);
  37.     }

  38.     DiscoverInfoBuilder(String stanzaId) {
  39.         super(stanzaId);
  40.     }

  41.     public DiscoverInfoBuilder(DiscoverInfo discoverInfo, String stanzaId) {
  42.         super(discoverInfo, stanzaId);
  43.         features.addAll(discoverInfo.getFeatures());
  44.         identities.addAll(discoverInfo.getIdentities());
  45.         node = discoverInfo.getNode();
  46.     }

  47.     @Override
  48.     public DiscoverInfoBuilder getThis() {
  49.         return this;
  50.     }

  51.     public DiscoverInfoBuilder addFeatures(Collection<String> features) {
  52.         for (String feature : features) {
  53.             addFeature(feature);
  54.         }
  55.         return getThis();
  56.     }

  57.     public DiscoverInfoBuilder addFeature(String feature) {
  58.         return addFeature(new Feature(feature));
  59.     }

  60.     public DiscoverInfoBuilder addFeature(Feature feature) {
  61.         features.add(feature);
  62.         return getThis();
  63.     }

  64.     public DiscoverInfoBuilder addIdentities(Collection<Identity> identities) {
  65.         this.identities.addAll(identities);
  66.         return getThis();
  67.     }

  68.     public DiscoverInfoBuilder addIdentity(Identity identity) {
  69.         identities.add(identity);
  70.         return getThis();
  71.     }

  72.     public DiscoverInfoBuilder setNode(String node) {
  73.         this.node = node;
  74.         return getThis();
  75.     }

  76.     @Override
  77.     public DiscoverInfo build() {
  78.         return new DiscoverInfo(this, true);
  79.     }

  80.     public DiscoverInfo buildWithoutValidiation() {
  81.         return new DiscoverInfo(this, false);
  82.     }

  83.     @Override
  84.     public List<Feature> getFeatures() {
  85.         return features;
  86.     }

  87.     @Override
  88.     public List<Identity> getIdentities() {
  89.         return identities;
  90.     }

  91.     @Override
  92.     public String getNode() {
  93.         return node;
  94.     }

  95.     public static DiscoverInfoBuilder buildResponseFor(DiscoverInfo request, IQ.ResponseType responseType) {
  96.         DiscoverInfoBuilder builder = new DiscoverInfoBuilder(createResponse(request, responseType));
  97.         builder.setNode(request.getNode());
  98.         return builder;
  99.     }
  100. }