All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vendasta.accountgroup.v1.internal.ListingSyncPro Maven / Gradle / Ivy

The newest version!
package com.vendasta.accountgroup.v1.internal;

import java.util.List;
import java.util.ArrayList;
import java.util.Date;
import java.util.Map;
import java.util.HashMap;
import java.util.Collections;
import java.util.Arrays;
import java.time.Duration;
import org.apache.commons.lang3.StringUtils;
import com.vendasta.accountgroup.v1.generated.ApiProto;

/**
 * 
 **/
public final class ListingSyncPro {

	/**
	 * 
	 **/
	public enum ServiceProviders { 
		UBERALL(0),
			YEXT(1);
		
		private static final Map protoTypeMap;
		static {
			Map aMap;
			aMap = new HashMap();
			aMap.put(ApiProto.ListingSyncPro.ServiceProviders.UBERALL, ListingSyncPro.ServiceProviders.UBERALL);
			aMap.put(ApiProto.ListingSyncPro.ServiceProviders.YEXT, ListingSyncPro.ServiceProviders.YEXT);
			protoTypeMap = Collections.unmodifiableMap(aMap);
		}
	
		private static final Map javaTypeMap;
		static {
			Map aMap;
			aMap = new HashMap();
			aMap.put(ListingSyncPro.ServiceProviders.UBERALL, ApiProto.ListingSyncPro.ServiceProviders.UBERALL);
			aMap.put(ListingSyncPro.ServiceProviders.YEXT, ApiProto.ListingSyncPro.ServiceProviders.YEXT);
			javaTypeMap = Collections.unmodifiableMap(aMap);
		}
	
		private int value;
	
		private ServiceProviders(int i) {
			value = i;
		}
		public int getValue() {
			return value;
		}
	
		public static ServiceProviders fromProto(ApiProto.ListingSyncPro.ServiceProviders proto) {
			return protoTypeMap.get(proto);
		}
	
		public static List fromProtos(List protos) {
			List result = new ArrayList();
			for(ApiProto.ListingSyncPro.ServiceProviders proto : protos) {
				result.add(ServiceProviders.fromProto(proto));
			}
			return result;
		}
	
		public ApiProto.ListingSyncPro.ServiceProviders toProto() {
			return javaTypeMap.get(this);
		}
	
		public static List toProtos(List objects) {
			List result = new ArrayList();
			for(ServiceProviders obj : objects) {
				result.add(obj.toProto());
			}
			return result;
		}
	}
	/**
	 * 
	 **/
	public enum BillingFrequency { 
		MONTHLY(0),
			YEARLY(1),
			ONE_TIME(2);
		
		private static final Map protoTypeMap;
		static {
			Map aMap;
			aMap = new HashMap();
			aMap.put(ApiProto.ListingSyncPro.BillingFrequency.MONTHLY, ListingSyncPro.BillingFrequency.MONTHLY);
			aMap.put(ApiProto.ListingSyncPro.BillingFrequency.YEARLY, ListingSyncPro.BillingFrequency.YEARLY);
			aMap.put(ApiProto.ListingSyncPro.BillingFrequency.ONE_TIME, ListingSyncPro.BillingFrequency.ONE_TIME);
			protoTypeMap = Collections.unmodifiableMap(aMap);
		}
	
		private static final Map javaTypeMap;
		static {
			Map aMap;
			aMap = new HashMap();
			aMap.put(ListingSyncPro.BillingFrequency.MONTHLY, ApiProto.ListingSyncPro.BillingFrequency.MONTHLY);
			aMap.put(ListingSyncPro.BillingFrequency.YEARLY, ApiProto.ListingSyncPro.BillingFrequency.YEARLY);
			aMap.put(ListingSyncPro.BillingFrequency.ONE_TIME, ApiProto.ListingSyncPro.BillingFrequency.ONE_TIME);
			javaTypeMap = Collections.unmodifiableMap(aMap);
		}
	
		private int value;
	
		private BillingFrequency(int i) {
			value = i;
		}
		public int getValue() {
			return value;
		}
	
		public static BillingFrequency fromProto(ApiProto.ListingSyncPro.BillingFrequency proto) {
			return protoTypeMap.get(proto);
		}
	
		public static List fromProtos(List protos) {
			List result = new ArrayList();
			for(ApiProto.ListingSyncPro.BillingFrequency proto : protos) {
				result.add(BillingFrequency.fromProto(proto));
			}
			return result;
		}
	
		public ApiProto.ListingSyncPro.BillingFrequency toProto() {
			return javaTypeMap.get(this);
		}
	
		public static List toProtos(List objects) {
			List result = new ArrayList();
			for(BillingFrequency obj : objects) {
				result.add(obj.toProto());
			}
			return result;
		}
	}



	private final Date purchaseDate;
	private final ListingSyncPro.BillingFrequency billingFrequency;
	private final Date expiryDate;
	private final String country;
	private final boolean discountFlag;
	private final ListingSyncPro.ServiceProviders serviceProvider;
	

	private ListingSyncPro (
		final Date purchaseDate,
		final ListingSyncPro.BillingFrequency billingFrequency,
		final Date expiryDate,
		final String country,
		final boolean discountFlag,
		final ListingSyncPro.ServiceProviders serviceProvider)
		
	{
		this.purchaseDate = purchaseDate;
		this.billingFrequency = billingFrequency;
		this.expiryDate = expiryDate;
		this.country = country;
		this.discountFlag = discountFlag;
		this.serviceProvider = serviceProvider;
		
	}
	
	/**
	 * 
      * @return The final value of purchaseDate on the object
	 **/
	public Date getPurchaseDate() {
		return this.purchaseDate;
	}
	
	/**
	 * 
      * @return The final value of billingFrequency on the object
	 **/
	public ListingSyncPro.BillingFrequency getBillingFrequency() {
		return this.billingFrequency;
	}
	
	/**
	 * 
      * @return The final value of expiryDate on the object
	 **/
	public Date getExpiryDate() {
		return this.expiryDate;
	}
	
	/**
	 * 
      * @return The final value of country on the object
	 **/
	public String getCountry() {
		return this.country;
	}
	
	/**
	 * 
      * @return The final value of discountFlag on the object
	 **/
	public boolean getDiscountFlag() {
		return this.discountFlag;
	}
	
	/**
	 * 
      * @return The final value of serviceProvider on the object
	 **/
	public ListingSyncPro.ServiceProviders getServiceProvider() {
		return this.serviceProvider;
	}
	

	public static class Builder {
		private Date purchaseDate;
		private ListingSyncPro.BillingFrequency billingFrequency;
		private Date expiryDate;
		private String country;
		private boolean discountFlag;
		private ListingSyncPro.ServiceProviders serviceProvider;
		
		public Builder() {
			this.purchaseDate = null;
			this.billingFrequency = null;
			this.expiryDate = null;
			this.country = "";
			this.discountFlag = false;
			this.serviceProvider = null;
			
		}
		
		/**
		  * Adds a value to the builder for purchaseDate
		  * @param purchaseDate Value to assign to the mutable Builder
		  * @return The Builder instance so that call chaining works
		 **/
		public Builder setPurchaseDate(Date purchaseDate) {
			this.purchaseDate = purchaseDate;
			return this;
		}
		
		/**
		  * Adds a value to the builder for billingFrequency
		  * @param billingFrequency Value to assign to the mutable Builder
		  * @return The Builder instance so that call chaining works
		 **/
		public Builder setBillingFrequency(ListingSyncPro.BillingFrequency billingFrequency) {
			this.billingFrequency = billingFrequency;
			return this;
		}
		
		/**
		  * Adds a value to the builder for expiryDate
		  * @param expiryDate Value to assign to the mutable Builder
		  * @return The Builder instance so that call chaining works
		 **/
		public Builder setExpiryDate(Date expiryDate) {
			this.expiryDate = expiryDate;
			return this;
		}
		
		/**
		  * Adds a value to the builder for country
		  * @param country Value to assign to the mutable Builder
		  * @return The Builder instance so that call chaining works
		 **/
		public Builder setCountry(String country) {
			this.country = country;
			return this;
		}
		
		/**
		  * Adds a value to the builder for discountFlag
		  * @param discountFlag Value to assign to the mutable Builder
		  * @return The Builder instance so that call chaining works
		 **/
		public Builder setDiscountFlag(boolean discountFlag) {
			this.discountFlag = discountFlag;
			return this;
		}
		
		/**
		  * Adds a value to the builder for serviceProvider
		  * @param serviceProvider Value to assign to the mutable Builder
		  * @return The Builder instance so that call chaining works
		 **/
		public Builder setServiceProvider(ListingSyncPro.ServiceProviders serviceProvider) {
			this.serviceProvider = serviceProvider;
			return this;
		}
		
		/**
		  * Takes the configuration in the mutable Builder and uses it to instantiate a final instance
		  * of the ListingSyncPro class
		  * @return The instantiated final ListingSyncPro
		 **/
		public ListingSyncPro build() {
			return new ListingSyncPro(
				this.purchaseDate,
				this.billingFrequency,
				this.expiryDate,
				this.country,
				this.discountFlag,
				this.serviceProvider);
		}
	}

	/**
	 * Returns a Builder for ListingSyncPro, which is a mutable representation of the object.  Once the
	 * client has built up an object they can then create an immutable ListingSyncPro object using the
	 * build function.
	 * @return A fresh Builder instance with no values set
	 **/
	public static Builder newBuilder() {
		return new Builder();
	}

	/**
	 * Provides a human-readable representation of this object.  Useful for debugging.
	 * @return A string representation of the ListingSyncPro instance
	 **/
	 public String toString() {
		 String result = "ListingSyncPro\n";
		 result += "-> purchaseDate: (Date)"
		     + StringUtils.join("\n  ", Arrays.asList(String.valueOf(this.purchaseDate).split("\n"))) + "\n"; 
		 result += "-> billingFrequency: (ListingSyncPro.BillingFrequency)"
		     + StringUtils.join("\n  ", Arrays.asList(String.valueOf(this.billingFrequency).split("\n"))) + "\n"; 
		 result += "-> expiryDate: (Date)"
		     + StringUtils.join("\n  ", Arrays.asList(String.valueOf(this.expiryDate).split("\n"))) + "\n"; 
		 result += "-> country: (String)"
		     + StringUtils.join("\n  ", Arrays.asList(String.valueOf(this.country).split("\n"))) + "\n"; 
		 result += "-> discountFlag: (boolean)"
		     + StringUtils.join("\n  ", Arrays.asList(String.valueOf(this.discountFlag).split("\n"))) + "\n"; 
		 result += "-> serviceProvider: (ListingSyncPro.ServiceProviders)"
		     + StringUtils.join("\n  ", Arrays.asList(String.valueOf(this.serviceProvider).split("\n"))) + "\n"; 
		 
		 return result;
	 }
	/**
	* Allows for simple conversion between the low-level generated protobuf object to
	* ListingSyncPro, which is much more usable.
	* @return An instance of ListingSyncPro representing the input proto object
	**/
	public static ListingSyncPro fromProto(ApiProto.ListingSyncPro proto) {
		ListingSyncPro out = null;
		if (proto != null) {
			ListingSyncPro.Builder outBuilder = ListingSyncPro.newBuilder()
			.setPurchaseDate(proto.hasPurchaseDate()?new Date(proto.getPurchaseDate().getSeconds() * 1000):null)
			.setBillingFrequency(ListingSyncPro.BillingFrequency.fromProto(proto.getBillingFrequency()))
			.setExpiryDate(proto.hasExpiryDate()?new Date(proto.getExpiryDate().getSeconds() * 1000):null)
			.setCountry(proto.getCountry())
			.setDiscountFlag(proto.getDiscountFlag())
			.setServiceProvider(ListingSyncPro.ServiceProviders.fromProto(proto.getServiceProvider()));
			out = outBuilder.build();
		}
		return out;
	}

	/**
	* Convenience method for handling lists of proto objects.  It calls .fromProto on each one
	* and returns a list of the converted results.
	* @return A list of ListingSyncPro instances representing the input proto objects
	**/
	public static List fromProtos(List protos) {
		List out = new ArrayList();
		for(ApiProto.ListingSyncPro proto : protos) {
			out.add(ListingSyncPro.fromProto(proto));
		}
		return out;
	}

	/**
	 * Allows for simple conversion of an object to the low-level generated protobuf object.
	 * @return An instance of ApiProto.ListingSyncPro which is a proto object ready for wire transmission
	 **/
	 public ApiProto.ListingSyncPro toProto() {
		 ListingSyncPro obj = this;
		 ApiProto.ListingSyncPro.Builder outBuilder = ApiProto.ListingSyncPro.newBuilder();
		 if(obj.getPurchaseDate()!=null){outBuilder.setPurchaseDate(com.google.protobuf.Timestamp.newBuilder().setSeconds(obj.getPurchaseDate().getTime() / 1000).build());}
		 outBuilder.setBillingFrequency(obj.getBillingFrequency() != null?obj.getBillingFrequency().toProto():null);
		 if(obj.getExpiryDate()!=null){outBuilder.setExpiryDate(com.google.protobuf.Timestamp.newBuilder().setSeconds(obj.getExpiryDate().getTime() / 1000).build());}
		 outBuilder.setCountry(obj.getCountry());
		 outBuilder.setDiscountFlag(obj.getDiscountFlag());
		 outBuilder.setServiceProvider(obj.getServiceProvider() != null?obj.getServiceProvider().toProto():null);
		 return outBuilder.build();
	 }

	 /**
	  * Convenience method for handling lists of objects.  It calls .toProto on each one and
	  * returns a list of the converted results.
	  * @return A list of ApiProto.ListingSyncPro instances representing the input objects.
	  */
	public static List toProtos(List objects) {
		List out = new ArrayList();
		if(objects != null) {
			for (ListingSyncPro obj : objects) {
				out.add(obj!=null?obj.toProto():null);
			}
		}
		return out;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy