Search Results

Search found 36981 results on 1480 pages for 'string formatting'.

Page 450/1480 | < Previous Page | 446 447 448 449 450 451 452 453 454 455 456 457  | Next Page >

  • Image loader cant load my live image url

    - by Bindhu
    In my application i need to load the images in list view, when using locale(ip ported url) then no problem all images are loading properly, But when using live url then the images are not loading, My image loader class: public class ImageLoader { MemoryCache memoryCache = new MemoryCache(); FileCache fileCache; private Map<ImageView, String> imageViews = Collections .synchronizedMap(new WeakHashMap<ImageView, String>()); ExecutorService executorService; public ImageLoader(Context context) { fileCache = new FileCache(context); executorService = Executors.newFixedThreadPool(5); } final int stub_id = R.drawable.appointeesample; public void DisplayImage(String url, ImageView imageView) { imageViews.put(imageView, url); Bitmap bitmap = memoryCache.get(url); if (bitmap != null) imageView.setImageBitmap(bitmap); else { Log.d("stub", "stub" + stub_id); queuePhoto(url, imageView); imageView.setImageResource(stub_id); } } private void queuePhoto(String url, ImageView imageView) { PhotoToLoad p = new PhotoToLoad(url, imageView); executorService.submit(new PhotosLoader(p)); } private Bitmap getBitmap(String url) { File f = fileCache.getFile(url); // from SD cache Bitmap b = decodeFile(f); if (b != null) return b; // from web try { Bitmap bitmap = null; URL imageUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) imageUrl .openConnection(); conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.setInstanceFollowRedirects(true); InputStream is = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is, 81960); BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; OutputStream os = new FileOutputStream(f); Utils.CopyStream(bis, os); os.close(); bitmap = decodeFile(f); Log.d("bitmap", "Bit map" + bitmap); return bitmap; } catch (Exception ex) { ex.printStackTrace(); return null; } } // decodes image and scales it to reduce memory consumption private Bitmap decodeFile(File f) { try { try { BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeStream(new FileInputStream(f), null, o); final int REQUIRED_SIZE = 200; int scale = 1; while (o.outWidth / scale / 2 >= REQUIRED_SIZE && o.outHeight / scale / 2 >= REQUIRED_SIZE) scale *= 2; BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; return BitmapFactory.decodeStream(new FileInputStream(f), null, o2); } catch (FileNotFoundException e) { } finally { System.gc(); } return null; } catch (Exception e) { } return null; } // Task for the queue private class PhotoToLoad { public String url; public ImageView imageView; public PhotoToLoad(String u, ImageView i) { url = u; imageView = i; } } class PhotosLoader implements Runnable { PhotoToLoad photoToLoad; PhotosLoader(PhotoToLoad photoToLoad) { this.photoToLoad = photoToLoad; } @Override public void run() { if (imageViewReused(photoToLoad)) return; Bitmap bmp = getBitmap(photoToLoad.url); memoryCache.put(photoToLoad.url, bmp); if (imageViewReused(photoToLoad)) return; BitmapDisplayer bd = new BitmapDisplayer(bmp, photoToLoad); Activity a = (Activity) photoToLoad.imageView.getContext(); a.runOnUiThread(bd); } } boolean imageViewReused(PhotoToLoad photoToLoad) { String tag = imageViews.get(photoToLoad.imageView); if (tag == null || !tag.equals(photoToLoad.url)) return true; return false; } // Used to display bitmap in the UI thread class BitmapDisplayer implements Runnable { Bitmap bitmap; PhotoToLoad photoToLoad; public BitmapDisplayer(Bitmap b, PhotoToLoad p) { bitmap = b; photoToLoad = p; } public void run() { if (imageViewReused(photoToLoad)) return; if (bitmap != null) photoToLoad.imageView.setImageBitmap(bitmap); else photoToLoad.imageView.setImageResource(stub_id); } } public void clearCache() { memoryCache.clear(); fileCache.clear(); } My Live Image url for Example: https://goappointed.com/images_upload/3330Torana_Logo.JPG I have referred google but no solution is working, Thanks a lot in advance.

    Read the article

  • regular expression with special chars

    - by xRobot
    I need a regular expression to validate string with one or more of these characters: a-z A-Z ' àòèéùì simple white space FOR EXAMPLE these string are valide: D' argon calabrò maryòn l' Ancol these string are NOT valide: hello38239 my_house work [tab] with me I tryed this: re.match(r"^[a-zA-Z 'òàèéìù]+$", self.cleaned_data['title'].strip()) It seems to work in my python shell but in Django I get this error: SyntaxError at /home/ ("Non-ASCII character '\\xc3' ... Why ?

    Read the article

  • How can I tell when the Text of a System.Windows.Forms.GroupBox wraps to the next line?

    - by fre0n
    I'm creating a GroupBox at runtime and setting its Text property. Usually, the text is only on one line, but sometimes it wraps. The problem is that the controls contained in the GroupBox cover up the GroupBox's text. What I'd like to do is determine if and when the text wraps. Specifically, I'd like to determine how much extra height the wrapped text takes up as compared to a single line. That way, I can reposition the GroupBox's controls and adjust its height. Initially, I thought I'd do this by calling the GroupBox's CreateGraphics() method, and using the Graphics to measure the string. Something like this: private void SetGroupBoxText(GroupBox grp, string text) { const int somePadding = 10; Graphics g = grp.CreateGraphics(); SizeF textSize = g.MeasureString(text, grp.Font); if (textSize.Width > (grp.Width - somePadding)) { // Adjust height, etc. } } The problem is that the size generated by g.MeasureString(text, grp.Font) doesn't seem to be accurate. I determined that it wasn't accurate by putting enough of a single character to cause a wrap, then measuring the resulting string. For example, it took 86 pipes (|) to until a wrap happened. When I measured that string, its width was ~253. And it took 16 capital W's to force a wrap - its string had a width of ~164. These were the two extremes that I tested. My GroupBox's width was 189. (a's took 29 and had a width of ~180, O's took 22 and had a width of ~189) Does anyone have any ideas? (hacks, WinAPI, etc. are welcome solutions)

    Read the article

  • Creating Html Helper Method - MVC Framework

    - by nettguy
    I am learning MVC from Stephen Walther tutorials on MSDN website. He suggests that we can create Html Helper method. Say Example using System; namespace MvcApplication1.Helpers { public class LabelHelper { public static string Label(string target, string text) { return String.Format("<label for='{0}'>{1}</label>", target, text); } } } My Question under which folder do i need to create these class? View folder or controller folder? or can i place it in App_Code folder?

    Read the article

  • How to access the map returned by IParameterValues::getParameterValues()?

    - by Hua
    I declared a command and a commandParameter for this command. I specified the "values" of this commandParameter as a class implemented by myself. The implementation of this class is below, public class ParameterValues implements IParameterValues { @Override public Map<String, Double> getParameterValues() { // TODO Auto-generated method stub Map<String, Double> values = new HashMap<String, Double>(2); values.put("testParam", 1.1239); values.put("AnotherTest", 4.1239); return values; } } The implementation of the handler of this command is blow, public class testHandler extends AbstractHandler implements IHandler { private static String PARAMETER_ID = "my.parameter1"; @Override public Object execute(ExecutionEvent event) throws ExecutionException { String value = event.getParameter(PARAMETER_ID); MessageDialog.openInformation(HandlerUtil.getActiveShell(event), "Test", "Parameter ID: " + PARAMETER_ID + "\nValue: " + value); return null; } } Now, I contribute the command to a menu, <menuContribution locationURI="menu:org.eclipse.ui.main.menu"> <menu id="my.edit" label="Edit"> <command commandId="myCommand.test" label="Test1"> <parameter name="my.parameter1" value="testParam"> </parameter> </command> Since I specified a "values" class for the commandParater, I expect when the menu is clicked, this code line "String value = event.getParameter(PARAMETER_ID);" in the handler class returns 1.1239 instead of "testParam". But, I still see that code line returns "testParam". What's the problem? How could I access the map returned by getParameterValues()? By the way, following menu declaration still works even I don't define "ppp" in the map. <menuContribution locationURI="menu:org.eclipse.ui.main.menu"> <menu id="my.edit" label="Edit"> <command commandId="myCommand.test" label="Test1"> <parameter name="my.parameter1" value="ppp"> </parameter> </command> Thanks!

    Read the article

  • Extract dates from filename

    - by Newbie
    I have a situation where I need to extract dates from the file names whose general pattern is [filename_]YYYYMMDD[.fileExtension] e.g. "xxx_20100326.xls" or x2v_20100326.csv The below program does the work //Number of charecter in the substring is set to 8 //since the length of YYYYMMDD is 8 public static string ExtractDatesFromFileNames(string fileName) { return fileName.Substring(fileName.IndexOf("_") + 1, 8); } Is there any better option of achieving the same? I am basically looking for standard practice. I am using C#3.0 and dotnet framework 3.5 Edit: I have like the solution and the way of answerig of LC. I have used his program like string regExPattern = "^(?:.*_)?([0-9]{4})([0-9]{2})([0-9]{2})(?:\\..*)?$"; string result = Regex.Match(fileName, @regExPattern).Groups[1].Value; The input to the function is : "x2v_20100326.csv" But the output is: 2010 instead of 20100326(which is the expected one). Can anyone please help.

    Read the article

  • session variables in an ASP.NET

    - by Beep
    hi guy i am trying to place my session in to a drop down, any help would be great. at the moment it puts the data in to a label, i wish to put it into a dropdown with it adding a new string every time i click button without getting rid of the last default page protected void Button1_Click1(object sender, EventArgs e) { Session["Fruitname"] = TbxName.Text; // my session i have made } output page protected void Page_Load(object sender, EventArgs e) { var fruitname = Session["Fruitname"] as String; // my session ive made fruit.Text = fruitname; // session used in lable } Have Tried var myFruits = Session["Fruitname"] as List<string>; myFruits.Add(listbox1.Text); but i get error when i try to run the program Broken glass thanks for your help, it is still not doing what i need but its getting there. var fruitname = Session["Fruitname"] as String; // my session ive made fruit.Text = string.Join(",", fruitname); // session used in lable this is what is working. i need a dropdown to display all the strings put into TbxName.Text; to output into fruit

    Read the article

  • how to add values in array

    - by nhoyti
    hi guys, i just want to ask help again. I've created a method to read values in gridview, i was able to get and read values from the gridview. The problem now, is how can i store the values inside an array and i want it to pass on the other page. here's the code i've created private void getrowvalues() { string combinedvalues; foreach (GridViewRow row in gvOrderProducts.Rows) { string prodname = ((Label)row.FindControl("lblProductName")).Text; string txtvalues = ((TextBox)row.FindControl("txtQuantity")).Text; combinedvalues = prodname + "|" + txtvalues; } } i want the result string combinedvalues to be put in an array or collection of strings which i can be access in other page. Is there a way to do it? Any inputs will be greatly appreciated. thanks!!

    Read the article

  • Fill a array with List data

    - by marionmaiden
    How can I fill a array with the data provided by one List? For example, I have a List with Strings: List l = new ArrayList<String>(); l.add("a"); l.add("b"); l.add("c"); then I want to copy this data into a String array: String[] array = ?

    Read the article

  • C# WCF and Object Inheritence

    - by Michael Edwards
    I have the following setup of two classes: [SerializableAttribute] public class ParentData{ [DataMember] public string Title{get;set;} } [DataContract] public class ChildData : ParentData{ [DataMember] public string Abstract{get;set;} } These two classes are served through a WCF service. However I only want the service to expose the ChildData class to the end user but pull the marked up DataMember properties from the parent. E.g. The consuming client would have a stub class that looked like: public class ChildData{ public string Title{get;set;} public string Abstract{get;set;} } If I uses the parent and child classes as above the stub class only contains the Abstract property. I have looked at using the KnownType attribute on the ChildData class like so: [DataContract] [KnownType(typeOf(ParentData)] public class ChildData : ParentData{ [DataMember] public string Abstract{get;set;} } However this didn't work. I then applied the DataContract attribute to the ParentData class, however this then creates two stub classes in the client application which I don't want. Is there any way to tell the serializer that it should flatten the inheritance to that of the sub-class i.e. ChildData

    Read the article

  • java.lang.ClassNotFoundException: com.mysql.jdbc.Driver When run jar file

    - by user1024858
    Hi all, Connection conn = null; String url = "jdbc:mysql://localhost:3306/"; String dbName = "test"; String driver = "com.mysql.jdbc.Driver"; String userName = "root"; String password = "admin"; try { Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url+dbName,userName,password); System.out.println("Connected to the database"); conn.close(); System.out.println("Disconnected from database"); } catch (Exception e) { e.printStackTrace();} I run in eclipse it's ok, but i built to jar file and run on command line java -jar Test.jar i get this error: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) Please help me how to fix it. Thanks!!!

    Read the article

  • VB.NET take each letter of a word and display in ListBox

    - by Kaleet
    Private Sub btnWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWord.Click Dim Inputter As String Dim Words As String = "" Do Inputter = InputBox("Enter word", "Enter Word") If Inputter <> String.Empty Then lstDisplay.Items.Add(Inputter) Word += Inputter.Substring(0, 1) End If Loop Until Inputter <> String.Empty ' SOMETHING GOES HERE!!!!!' lstDisplay.Items.Add("---") lstDisplay.Items.Add(Word) End Sub Here is how it works, when you click the button it displays an input box so for example type in "CAT". But I can't figure out how to get it to do C (newline) A (newline) T (newline) within the listbox. Please help! C A T - CAT

    Read the article

  • Can't return nil, but zero value of slice

    - by Sergi
    I am having the case in which a function with the following code: func halfMatch(text1, text2 string) []string { ... if (condition) { return nil // That's the final code path) } ... } is returning []string(nil) instead of nil. At first, I thought that perhaps returning nil in a function with a particular return type would just return an instance of a zero-value for that type. But then I tried a simple test and that is not the case. Does anybody know why would nil return an empty string slice?

    Read the article

  • Java: global values inside a class?

    - by HH
    I want less methods. I want a common global TestClass from which I could use any of its value inside the class. import java.util.*; import java.io.*; public class TestClass { TestClass(String hello){ String hallo = hello; String halloSecond = "Saluto!"; } public static void main(String[] args) { TestClass test = new TestClass("Tjena!"); System.out.println("I want "Tjena!": " + test.hallo); TestClass testSecond = new TestClass("1"); System.out.println("I want Saluto!:" + test.halloSecond); System.out.println("I want Saluto!:" + testSecond.halloSecond); } }

    Read the article

  • best way to find out type

    - by laspal
    hi, I have a dict val_dict - {'val1': 'abcd', 'val': '1234', 'val3': '1234.00', 'val4': '1abcd 2gfff'} All the values to my keys are string. So my question is how to find out type for my values in the dict. I mean if i say`int(val_dict['val1']) will give me error. Basically what I am trying to do is find out if the string is actual string or int or float.` if int( val_dict['val1'): dosomething else if float(val_dict['val1']): dosomething thanks

    Read the article

  • Not Able to call The method Asynchronously in the Unit Test.

    - by user43838
    Hi everyone, I am trying to call a method that passes an object called parameters. public void LoadingDataLockFunctionalityTest() { DataCache_Accessor target = DataCacheTest.getNewDataCacheInstance(); target.itemsLoading.Add("WebFx.Caching.TestDataRetrieverFactorytestsync", true); DataParameters parameters = new DataParameters("WebFx.Core", "WebFx.Caching.TestDataRetrieverFactory", "testsync"); parameters.CachingStrategy = CachingStrategy.TimerDontWait; parameters.CacheDuration = 0; string data = (string)target.performGetForTimerDontWaitStrategy(parameters); TestSyncDataRetriever.SimulateLoadingForFiveSeconds = true; Thread t1 = new Thread(delegate() { string s = (string)target.performGetForTimerDontWaitStrategy(parameters); Console.WriteLine(s ?? String.Empty); }); t1.Start(); t1.Join(); Thread.Sleep(1000); ReaderWriterLockSlim rw = DataCache_Accessor.GetLoadingLock(parameters); Assert.IsTrue(rw.IsWriteLockHeld); Assert.IsNotNull(data); } My test is failing all the time and i am not able step through the method.. Can someone please put me in the right direction Thanks

    Read the article

  • Benchmark of Java Try/Catch Block

    - by hectorg87
    I know that going into a catch block has some significance cost when executing a program, however, I was wondering if entering a try{} block also had any impact so I started looking for an answer in google with many opinions, but no benchmarking at all. Some answers I found were: Java try/catch performance, is it recommended to keep what is inside the try clause to a minimum? Try Catch Performance Java Java try catch blocks However they didn't answer my question with facts, so I decided to try it for myself. Here's what I did. I have a csv file with this format: host;ip;number;date;status;email;uid;name;lastname;promo_code; where everything after status is optional and will not even have the corresponding ; , so when parsing a validation has to be done to see if the value is there, here's where the try/catch issue came to my mind. The current code that in inherited in my company does this: StringTokenizer st=new StringTokenizer(line,";"); String host = st.nextToken(); String ip = st.nextToken(); String number = st.nextToken(); String date = st.nextToken(); String status = st.nextToken(); String email = ""; try{ email = st.nextToken(); }catch(NoSuchElementException e){ email = ""; } and it repeats what it's done for email with uid, name, lastname and promo_code. and I changed everything to: if(st.hasMoreTokens()){ email = st.nextToken(); } and in fact it performs faster. When parsing a file that doesn't have the optional columns. Here are the average times: --- Trying:122 milliseconds --- Checking:33 milliseconds however, here's what confused me and the reason I'm asking: When running the example with values for the optional columns in all 8000 lines of the CSV, the if() version still performs better than the try/catch version, so my question is Does really the try block does not have any performance impact on my code? The average times for this example are: --- Trying:105 milliseconds --- Checking:43 milliseconds Can somebody explain what's going on here? Thanks a lot

    Read the article

  • Is there a way for a user to disable an AlertDialog completely?

    - by NewGuyChris
    In the app I'm making, I have an "if" statement where if two strings are saved to a certain string, an AlertDialog pops up. These strings will stay the same for some users, thus having this AlertDialog constantly pop up whenever they launch the activity where the ALertDialog is set to appear. Code (I have no setNegativeButton as of yet): private void SetWarning() { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("Warning!"); alert.setMessage(R.string.Warning); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { //No action needed; just close the AlertDialog. } }); alert.show(); } Here is a segment of my code that makes this AlertDialog appear: SharedPreferences sharedPreferences = getSharedPreferences("MY_PREF", MODE_PRIVATE); String s = sharedPreferences2.getString("MEM1", ""); String s2 = sharedPreferences2.getString("MEM2", ""); if(s.equals("String1") && s2.equals("String2")) SetWarning(); Is there a way to make an "alert.setNegativeButton" method where if the user clicks it, the AlertDialog will NEVER appear again? I'm thinking of maybe somehow implementing another SavedPreferences somehow so it saves the users selection and will then prevent the AlertDialog from ever appearing again. So far, to no luck. I've searched to find nothing, other than people asking how to disable buttons in an AlertDialog. Thank you! New updated code: alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { //set sharedpreferences boolean called DONTSHOWAGAIN to true; SharedPreferences sharedPreferences2 = getSharedPreferences("MY_PREF", MODE_PRIVATE); Boolean dontShowAgain = sharedPreferences2.getBoolean("dontShowAgain ", false); SharedPreferences.Editor ed = sharedPreferences2.edit(); ed.putBoolean("dontShowAgain", true); ed.commit(); } }); alert.show(); } private void StringWarning() { SharedPreferences sharedPreferences2 = getSharedPreferences("MY_PREF", MODE_PRIVATE); String s = sharedPreferences2.getString("MEM1", ""); String s2 = sharedPreferences2.getString("MEM2", ""); if(s.equals("String1") && s2.equals("String2")){ if(!dontShowAgain){ SetWarningExamConflict(); } }

    Read the article

  • How to generate entities with Objects?

    - by 01
    I want to generate @Enities with seam-gen from existing database. However its generates very simple version only. For Example @Entity @Table(name = "badges") public class Badges implements java.io.Serializable { private Integer id; private **Integer userId**; private String name; private String date; I want him to generate @Entity @Table(name = "badges") public class Badges implements java.io.Serializable { private Integer id; private **User user**; private String name; private String date; I even have constrain on userId and it points to column User.id P.S. Im using MySQL5 and seam gen is using hbm2java to generate entities.

    Read the article

  • SQLAlchemy introspection

    - by Shaman
    What I am trying to do is to get from SqlAlchemy entity definition all it's Column()'s, determine their types and constraints, to be able to pre-validate, convert data and display custom forms to user. How can I introspect it? Example: class Person(Base): ''' Represents Person ''' __tablename__ = 'person' # Columns id = Column(String(8), primary_key=True, default=uid_gen) title = Column(String(512), nullable=False) birth_date = Column(DateTime, nullable=False) I want to get this id, title, birth date, determine their restrictions (such as title is string and max length is 512 or birth_date is datetime etc) Thank you

    Read the article

  • How send sms 2automatically 2 a paricular no: only?

    - by royalcasanova
    import net.rim.device.api.io.; import net.rim.device.api.system.; import javax.microedition.io.; import java.util.; import java.io.*; public class SendSms extends Application { private static final int MAX_PHONE_NUMBER_LENGTH = 32; private String addr = "15191112222"; private String msg = "This is a test message."; private DatagramConnection _dc = null; private static String _openString = "sms://"; public static void main(String[] args) { new SendSms().enterEventDispatcher(); } public SendSms() { try { _dc = (DatagramConnection)Connector.open(_openString); byte[] data = msg.getBytes(); Datagram d = _dc.newDatagram(_dc.getMaximumLength()); d.setAddress("//" + addr); _dc.send(d); } catch ( IOException e) {} System.exit(0); } }

    Read the article

  • How do I get class of an internal static class in another assembly?

    - by Echiban
    I have a class C in Assembly A like this: internal class C { internal static string About_Name { get { return "text"; } ... } I have about 20 such static properties. Is there a way, in an outside assembly, without using friend assembly attribute (.Net reflection only), get class C so I can invoke any of the static string properties like this: Class C = <some .Net reflection code>; string expected = C.About_Name; If that is not possible, a .Net reflection code to get the string property value directly will suffice, but not ideal. Thanks in advance!

    Read the article

  • Getting Junk characters while trying to print the file contents using Java

    - by user1523797
    I am reading a file's contents and trying to print the contents using java. But it prints junk characters along with the file content. Code: import java.io.*; public class ReadFile { public String readFile(String filePath){ StringBuilder contents = new StringBuilder(); File file = new File(filePath); try{ String lines = null; FileReader fileReader1 = new FileReader(file); BufferedReader buffer = new BufferedReader(fileReader1); while((lines = buffer.readLine())!=null){ contents.append(lines); } buffer.close(); } catch(FileNotFoundException ex){ System.out.println("File not found."); }catch(IOException ex){ System.out.println("Exception ocurred."); } return contents.toString(); } public static void main(String[] args){ ReadFile rf = new ReadFile(); String lines = rf.readFile("C:\\Data\\FaultDn.txt"); System.out.println("Original file contents: " + lines); } } The file contents are: partner.cisco.com:org-root/mac-pool-QA_MAC_Pool_5-Sep-2012_12:00 The output is: ![Alt Output](C:\Users\safarhee\Desktop\Output.jpg) Can you please point me to what I am missing in this code?

    Read the article

  • Problem persisting inheritance tree

    - by alaiseca
    I have a problem trying to map an inheritance tree. A simplified version of my model is like this: @MappedSuperclass @Embeddable public class BaseEmbedded implements Serializable { @Column(name="BE_FIELD") private String beField; // Getters and setters follow } @MappedSuperclass @Embeddable public class DerivedEmbedded extends BaseEmbedded { @Column(name="DE_FIELD") private String deField; // Getters and setters follow } @MappedSuperclass public abstract class BaseClass implements Serializable { @Embedded protected BaseEmbedded embedded; public BaseClass() { this.embedded = new BaseEmbedded(); } // Getters and setters follow } @Entity @Table(name="MYTABLE") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="TYPE", discriminatorType=DiscriminatorType.STRING) public class DerivedClass extends BaseClass { @Id @Column(name="ID", nullable=false) private Long id; @Column(name="TYPE", nullable=false, insertable=false, updatable=false) private String type; public DerivedClass() { this.embedded = new DerivedClass(); } // Getters and setters follow } @Entity @DiscriminatorValue("A") public class DerivedClassA extends DerivedClass { @Embeddable public static NestedClassA extends DerivedEmbedded { @Column(name="FIELD_CLASS_A") private String fieldClassA; } public DerivedClassA() { this.embedded = new NestedClassA(); } // Getters and setters follow } @Entity @DiscriminatorValue("B") public class DerivedClassB extends DerivedClass { @Embeddable public static NestedClassB extends DerivedEmbedded { @Column(name="FIELD_CLASS_B") private String fieldClassB; } public DerivedClassB() { this.embedded = new NestedClassB(); } // Getters and setters follow } At Java level, this model is working fine, and I believe is the appropriate one. My problem comes up when it's time to persist an object. At runtime, I can create an object which could be an instance of DerivedClass, DerivedClassA or DerivedClassB. As you can see, each one of the derived classes introduces a new field which only makes sense for that specific derived class. All the classes share the same physical table in the database. If I persist an object of type DerivedClass, I expect fields BE_FIELD, DE_FIELD, ID and TYPE to be persisted with their values and the remaining fields to be null. If I persist an object of type DerivedClass A, I expect those same fields plus the FIELD_CLASS_A field to be persisted with their values and field FIELD_CLASS_B to be null. Something equivalent for an object of type DerivedClassB. Since the @Embedded annotation is at the BaseClass only, Hibernate is only persisting the fields up to that level in the tree. I don't know how to tell Hibernate that I want to persist up to the appropriate level in the tree, depending on the actual type of the embedded property. I cannot have another @Embedded property in the subclasses since this would duplicate data that is already present in the superclass and would also break the Java model. I cannot declare the embedded property to be of a more specific type either, since it's only at runtime when the actual object is created and I don't have a single branch in the hierarchy. Is it possible to solve my problem? Or should I resignate myself to accept that there is no way to persist the Java model as it is? Any help will be greatly appreciated.

    Read the article

< Previous Page | 446 447 448 449 450 451 452 453 454 455 456 457  | Next Page >