001 /* 002 * $Id: PrimaryComponent.java 3155 2010-05-25 20:10:18Z kredel $ 003 */ 004 005 package edu.jas.application; 006 007 008 import java.io.Serializable; 009 010 import edu.jas.structure.GcdRingElem; 011 012 013 /** 014 * Container for primary components of ideals. 015 * @author Heinz Kredel 016 */ 017 public class PrimaryComponent<C extends GcdRingElem<C>> implements Serializable { 018 019 020 /** 021 * The primary ideal. 022 */ 023 public final Ideal<C> primary; 024 025 026 /** 027 * The associated prime ideal. 028 */ 029 public final IdealWithUniv<C> prime; 030 031 032 /** 033 * The exponent of prime for primary. 034 */ 035 protected int exponent; 036 037 038 /** 039 * Constructor not for use. 040 */ 041 protected PrimaryComponent() { 042 throw new IllegalArgumentException("do not use this constructor"); 043 } 044 045 046 /** 047 * Constructor. 048 * @param q the primary ideal 049 * @param p the prime ideal. 050 */ 051 protected PrimaryComponent(Ideal<C> q, IdealWithUniv<C> p) { 052 this(q, p, -1); 053 } 054 055 056 /** 057 * Constructor. 058 * @param q the primary ideal 059 * @param p the prime ideal. 060 * @param e the exponent of p for q. 061 */ 062 protected PrimaryComponent(Ideal<C> q, IdealWithUniv<C> p, int e) { 063 primary = q; 064 prime = p; 065 exponent = e; 066 } 067 068 069 /** 070 * Get exponent. 071 * @return exponent. 072 */ 073 public int getExponent() { 074 return exponent; 075 } 076 077 078 /** 079 * Set exponent. 080 * @param e the exponent. 081 */ 082 public void setExponent(int e) { 083 exponent = e; 084 } 085 086 087 /** 088 * String representation of the ideal. 089 * @see java.lang.Object#toString() 090 */ 091 @Override 092 public String toString() { 093 String s = "\nprimary:\n" + primary.toString() + "\nprime:\n" + prime.toString(); 094 if (exponent < 0) { 095 return s; 096 } else { 097 return s + "\nexponent:\n" + exponent; 098 } 099 } 100 101 102 /** 103 * Get a scripting compatible string representation. 104 * @return script compatible representation for this Element. 105 * @see edu.jas.structure.Element#toScript() 106 */ 107 public String toScript() { 108 // Python case 109 String s = primary.toScript() + ", " + prime.toString(); 110 if (exponent < 0) { 111 return s; 112 } else { 113 return s + ", " + exponent; 114 } 115 } 116 117 }