Chart labeling system

A method and apparatus for graphically displaying data is presented. A computer system selects a section from a group of sections in a circular chart for the data that is to be graphically displayed on a display system. The computer system identifies a largest size for a polygon that will fit in the section of the circular chart. The computer system also identifies text for the section. Further, the computer system displays the circular chart with the text in the section on a display system when the text fits within the polygon in the section. Graphically displaying the data with the text in the circular chart enables a desired level of comprehension of the data.

BACKGROUND INFORMATION

The present disclosure relates generally to data processing systems, and in particular, to graphically displaying data in a graphical user interface. Still more particularly, the present disclosure relates to a method and apparatus for generating labels for charts displayed graphically in a graphical user interface.

Information from spreadsheets, databases, and other sources may be displayed graphically in a number of different ways. For example, bar graphs, line graphs, circular charts, and other types of charts or graphs may be used to provide a graphical representation of the information.

Circular charts include pie charts and data charts. These types of circular charts are divided into sections. Each section typically illustrates a numerical proportion to the quantity represented by the section. In particular, the arc length of each section represents the quantity as a proportion relative to other quantities represented by arc lengths in the circular chart.

Presenting the circular charts as accurately as possible and conveying information as efficiently as possible is desirable. For example, labels are often used in circular charts to convey information about what each section represents. A label contains text providing information about a section in the circular chart. Depending on the number of sections, the text for the labels, as well as other factors, may make placing the text in the labels into the different sections more challenging than desired.

For example, the number of words in the text for a label may be greater than that which will fit within a section of a circular chart. Having a line of text in a label from one section cross over into another section may lead to confusion in graphically conveying the data represented in the different sections of the circular chart. In other words, the graphical conveyance of information through the circular chart may not be as clear when a label placed in one section also extends into another section in the circular chart. For example, the text in one label may intersect with the text in another label or may be too close to the text in another label. As a result, graphically conveying what each section represents in the circular chart becomes confusing.

One solution to this issue involves abbreviating words used in the text for the labels. Abbreviations, however, may be unclear and lead to confusion in understanding the data being graphically represented by the circular chart. A legend may be used to define abbreviations. The legend, however, may be more complex than desired or may not provide the desired aesthetics for the graphical representation for the information.

Another solution involves using labels that are located outside of the circular chart. Lines, arrows, or other indicators may be used to associate the labels with different sections of the circular chart. These types of labels, however, may not provide the desired aesthetics for the graphical representation of the information. Additionally, the use of labels outside of the sections also may lead to increased difficulty in understanding the chart with the increased clutter of having labels outside of the different sections.

Therefore, it would be desirable to have a method and apparatus that take into account at least some of the issues discussed above, as well as other possible issues. For example, it would be desirable to have a method and apparatus that generate labels for display within sections of a circular chart that avoid issues such as text for one section extending into another section while providing a desired aesthetic graphical display of the data.

SUMMARY

In one illustrative embodiment, a method for graphically displaying data is presented. A computer system selects a section from a group of sections in a circular chart for the data that is to be graphically displayed on a display system. The computer system identifies a largest size for a polygon that will fit in the section of the circular chart. The computer system also identifies text for the section. Further, the computer system displays the circular chart with the text in the section on a display system when the text fits within the polygon in the section. Graphically displaying the data with the text in the circular chart enables a desired level of comprehension of the data.

In another illustrative embodiment, a graphical display system comprises a display system and a chart generator in a computer system in communication with the display system. The chart generator selects a section from a group of sections in a circular chart for data that is to be graphically displayed on the display system. The chart generator also identifies a largest size for a polygon that will fit in the section of the circular chart. Further, the chart generator identifies text for the section. Still further, the chart generator displays the circular chart with the text in the section on the display system when the text fits within the polygon in the section. Graphically displaying the data with the text in the circular chart enables a desired level of comprehension of the data.

In yet another illustrative embodiment, a computer program product comprises a computer readable storage media. The computer program product also comprises a first program code, a second program code, a third program code, and a fourth program code that are stored on the computer readable storage media. The first program code selects a section from a group of sections in a circular chart for data that is to be graphically displayed on a display system. The second program code identifies a largest size for a polygon that will fit in the section of the circular chart. The third program code identifies text for the section. The fourth program code displays the circular chart with the text in the section on the display system when the text fits within the polygon in the section. Graphically displaying the data with the text in the circular chart enables a desired level of comprehension of the data.

DETAILED DESCRIPTION

The illustrative embodiments recognize and take into account one or more different considerations. For example, the illustrative embodiments recognize and take into account that currently used techniques for generating labels with text in charts may not be as clear as possible to convey information to a person viewing the chart. The illustrative embodiments recognize and take into account that current techniques for displaying text in circular charts often have an undesirable trade-off between the aesthetics of the chart and conveying the information in a desired manner. For example, the illustrative embodiments recognize and take into account that the use of abbreviations, codes, or other shorthand techniques for labels in a circular chart does not convey information as quickly and clearly as desired. Further, labels placed on the outside of circular charts often do not have a desired level of aesthetics.

Thus, the illustrative embodiments provide a method and apparatus for graphically displaying data. In one illustrative example, a computer system selects a section from a group of sections in a circular chart for the data that is to be graphically displayed on a display system. The computer system identifies the largest size for a polygon that will fit in the section of the circular chart and text for the section. The computer system displays the circular chart with the text in the section on a display system when the text fits within the polygon in the section, wherein the graphical display of the data with the text in the circular chart enables a desired level of comprehension of the data.

This process may be performed for each section in which text is to be displayed in the circular chart. In this manner, data may be graphically displayed in circular charts with a greater amount of desired aesthetics which may enable an increased comprehension of the data as compared to currently used techniques for displaying text in sections of circular charts.

With reference now to the figures, and in particular, toFIG. 1, an illustration of a block diagram of a circular chart environment is depicted in accordance with an illustrative embodiment. In circular chart environment100, chart generator102generates circular charts104.

In this illustrative example, chart generator102may be implemented in computer system106. Computer system106may be comprised of one or more computers or other data processing devices. When more than one data processing device is present, those devices may communicate with each other through a communications media such as a network.

In the illustrative example, circular charts104may include at least one of pie chart108, donut chart110, or some other suitable type of chart. As depicted, pie chart108may be considered as a donut chart with an inner radius of zero.

As used herein, the phrase “at least one of,” when used with a list of items, means different combinations of one or more of the listed items may be used and only one of each item in the list may be needed. In other words, at least one of means any combination of items and number of items may be used from the list but not all of the items in the list are required. The item may be a particular object, thing, or a category.

As depicted, chart generator102generates circular charts104with at least one of a desired level of aesthetics or a desired level of comprehension to a person viewing circular charts104. In the illustrative example, chart generator102selects section112from a group of sections114in circular chart116in circular charts104for data118that is to be graphically displayed on display system120in computer system106. “A group of,” as used herein with reference to items, means one or more items. For example, a group of sections114is one or more sections114.

In the illustrative example, display system120may be one or more display devices. Display system120may be located in a data processing device in computer system106selected from one of a work station, a tablet computer, a mobile phone, a laptop computer, or some other suitable data processing device.

Chart generator102identifies largest size122for polygon124that will fit in section112of circular chart116. In the illustrative example, polygon124may take different forms. For example, polygon124may be selected from one of a square, a rectangle, a trapezoid, a quadrilateral, a pentagon, a hexagon, or some other suitable polygon.

In particular, chart generator102sends information about circular chart116to display system120. Display system120receives this information and display circular chart116in graphical user interface130as a graphical display of data118in a manner that has increased comprehension and aesthetics for data118as compared to currently used techniques for displaying circular charts. As a result, circular chart116provides presentation data118for circular chart116in graphical user interface130when display system120is altered for the presentation of circular chart116.

In the illustrative example, text126may be formatted into a number of lines132. The number of lines132that may be used may be based on aesthetics. For example, the number of lines132of text126for section112may be one line, two lines, three lines, or some other suitable number of lines depending on the implementation.

In this manner, graphically displaying data118with text126in circular chart116enables a desired level of comprehension of data118. Additionally, a desired level of aesthetics for circular chart116also may be achieved in addition to a desired level of comprehension of data118. In this manner, chart generator102may operate as a chart labeling system to place text126into sections114in a manner that provides at least one of a desired level of aesthetics or a desired level of information conveyance of data118in circular charts104that are displayed in display system120.

As a result, computer system106operates as a special purpose computer system in which chart generator102enables displaying circular charts104with at least one of a greater level of aesthetics or a greater level of comprehension as compared to other computers that do not have chart generator102. In particular, chart generator102alters display system122and displays circular chart116with text126.

Also, chart generator102enables a higher level of aesthetics in displaying circular charts104with a desired level of comprehension of data118as compared to currently used computers for generating charts. In this manner, chart generator102operates in computer system106and alters display system120to provide a presentation of data118in circular chart116.

The illustration of circular chart environment100and the different components in circular chart environment100inFIG. 1are not meant to imply physical or architectural limitations to the manner in which an illustrative embodiment may be implemented. Other components in addition to or in place of the ones illustrated may be used. Some components may be unnecessary. Also, the blocks are presented to illustrate some functional components. One or more of these blocks may be combined, divided, or combined and divided into different blocks when implemented in an illustrative embodiment.

For example, circular charts104may be present in ways other than in graphical user interface130in display system120. For example, circular charts104may be printed on paper, transparencies, or on other suitable media. As another example, chart generator102may also identify the amount and the sizes of sections114in circular charts104from data118for circular chart116.

With reference next toFIG. 2, an illustration of a unit circle is depicted in accordance with an illustrative embodiment. As depicted, unit circle200is an example of circular chart116inFIG. 1. In this illustrative example, unit circle200is not an actual display of a circular chart. As depicted, unit circle200shows information about a circular chart.

In this illustrative example, unit circle200has a number of possible angles that may be used to define sections of a circular chart. As depicted, the numbers of possible angles are between zero and three hundred and sixty degrees about the center of unit circle200. In the illustrative example, unit circle200is shown on a two-dimensional graph having an x-axis and a y-axis. The center of unit circle200is at the origin of the graph.

As depicted, unit circle200has a radius of 1. As also depicted, the locations of the points about the unit circle for the number of possible angles are shown on unit circle200. The locations of these points on the graph are calculated using the following trigonometric formula: the cosine of the angle equals x and the sine of the angle equals y.

In these illustrative examples, information about a circular chart can be calculated using trigonometric formulas. For example, the largest size for a polygon that will fit in a section of a circular chart can be determined using trigonometric formulas.

As depicted, the largest size for a polygon that will fit in a section of unit circle200may be based on the orientation of the section. Orientation of a section is the general direction of the section indicated by the ends of the section formed by the angles about unit circle200. For example, the largest size for a polygon that would fit in a section defined by 150 degrees and 210 degrees about unit circle200may not fit in another section defined by 60 degrees and 120 degrees about unit circle200.

Turning toFIG. 3, an illustration of a donut chart is depicted in accordance with an illustrative embodiment. As depicted, donut chart300is an example of an implementation of donut chart110shown in block diagram form inFIG. 1. In this illustrative example, donut chart300is shown with solid lines. Information about how donut chart300is displayed is shown with dashed lines.

As depicted, donut chart300includes rectangle316. Rectangle316is an example of polygon124inFIG. 1. In this illustrative example, rectangle316includes a single line of text that may be used to describe lower section310. As depicted, rectangle316has width318and height320. In this illustrative example, height320of rectangle316is calculated based on the height required to display the line of text. The height required to display a line of text may be determined using well-known interfaces of a display system. The height required to display a line of text may also be selected by an operator or by some other suitable method.

In this illustrative example, circle322is halfway between outer radius circle302and inner radius circle304. Circle322is shown with dashed lines inFIG. 3to show how centroid324for lower section310is identified.

In this illustrative example, angle325is halfway between angle312and angle314. Thus, as shown, centroid324for lower section310is the point where angle325intersects with circle322.

In the illustrative example, centroid324for lower section310is used as the center of rectangle316in lower section310. Other locations for the center of rectangle316may also be selected. In this illustrative example, centroid324for lower section310is used as the center of rectangle316in lower section310for aesthetic reasons. Rectangle316is horizontal in this example for aesthetic reasons.

As depicted, width318is the largest width for rectangle316. If width318for rectangle316was longer than shown inFIG. 3, rectangle316would extend beyond section310. In this illustrative example, width318for rectangle316does not extend beyond section310for aesthetic reasons.

In the illustrative example, width318for rectangle316is the distance between intersecting point326and intersecting point328. When angle330and angle332are known, width318can also be identified using the law of cosines.

As depicted, other portions of rectangle316may be the intersecting points of rectangle316when the section in which rectangle316is located is smaller. For example, if angle314was equal to angle332, then width318for rectangle316would be reduced to ensure rectangle316did not extend beyond section310. In this example, the top line of rectangle316would hit angle314before the bottom line hit outer radius302.

Similarly, when section310is pointing generally in other directions, other portions of rectangle316may intersect with other portions of section310. As depicted, chart generator102inFIG. 1identifies the largest width318for rectangle316that can be horizontal at centroid324within section310. In this illustrative example, centroid324is also a centroid for rectangle316.

In the illustrative example, center306, rectangle316, circle322, angle325, angle312, and angle314are not features actually displayed as part of donut chart300. These features are shown in this illustration to more clearly describe how chart generator102generates a rectangle displaying text within donut chart300. These features are not displayed as part of donut chart300to a viewer of donut chart300.

Turning next toFIG. 4, an illustration of a donut chart is depicted in accordance with an illustrative embodiment. In this example, donut chart400is an example of donut chart110shown in block form inFIG. 1.

Section402has centroid413, section404has centroid414, section406has centroid416, section408has centroid418, section410has centroid420, and section412has centroid422. The centroids shown in this figure and in the other figures are not actually displayed in charts to a person viewing the charts, but they are shown here to illustrate how text is displayed in a chart, such as donut chart400.

For example, text424is displayed in section402with text424centered on centroid412. Text426is displayed in section404with text426centered on centroid414. Also, text428is displayed in section406with text428centered on centroid416. Text430is displayed in section408with text430centered on centroid418. Text432is displayed in section410with text432centered on centroid420. In the illustrative example, section412does not have text. The text for section412has been identified as being undisplayable within section412. The text in the sections may be referred to as labels for these sections.

With reference next toFIG. 5, an illustration of a donut chart is depicted in accordance with an illustrative embodiment. In this example, donut chart500is an example of donut chart110shown in block form inFIG. 1.

In this illustrative example, donut chart500is generated by chart generator102inFIG. 1. As depicted, donut chart500has 5 sections: section502, section504, section506, section508, and section510. In the illustrative example, all of the sections in donut chart500have text.

As depicted, section502has centroid512; section504has centroid514; section506has centroid516; section508has centroid518; and section510has centroid520. Again, the centroids shown in this figure are not actually displayed in donut chart500to a person viewing donut chart500, but they are shown here to illustrate how text is displayed in donut chart400.

With reference next toFIG. 6, an illustration of a donut chart is depicted in accordance with an illustrative embodiment. In this figure, donut chart600is an example of donut chart110shown in block form inFIG. 1.

As depicted, section602has centroid612, section604has centroid614, section606has centroid616, and section608has centroid618. The centroids in this illustrative example are not actually displayed in donut chart600to a person viewing donut chart600, but they are shown here to illustrate how text is displayed in donut chart600.

In this illustrative example, text624is displayed in section602with text624centered on centroid612. Text626is displayed in section604with text626centered on centroid614, and text628is displayed in section606with text628centered on centroid616.

Text630is displayed in association with section608in hover box632. Hover box632is displayed when a pointer is moved over section608.

With reference next toFIG. 7, an illustration of a pie chart is depicted in accordance with an illustrative embodiment. In this example, pie chart700is an example of pie chart108shown in block form inFIG. 1.

As depicted, section702has centroid712; section704has centroid714; and section706has centroid716. These centroids are not displayed in donut chart700to a person viewing donut chart700, but they are shown here to demonstrate how text is displayed in donut chart700.

The illustrations of the circular charts inFIGS. 4-7are not meant to limit the manner in which other illustrative examples may be implemented. For example, a call out or pop window may be used to display text630in place of hover box632inFIG. 6. As another example, a call out with text630may always be displayed rather than being displayed when a pointer is moved over section608.

With reference now toFIG. 8, an illustration of a flowchart of a process for graphically displaying data is depicted in accordance with an illustrative embodiment. The process illustrated inFIG. 8may be implemented in circular chart environment100inFIG. 1. In particular, the process may be implemented in chart generator102to display data118in circular charts104on display system120in computer system106.

The process begins by a computer system selecting a section from a group of sections in a circular chart for the data that is to be graphically displayed on a display system (operation800). The computer system identifies a largest size for a polygon that will fit in the section of the circular chart (operation802). The computer system then identifies text for the section (operation804). A determination is made as to whether the text fits within the polygon (operation806).

The computer system displays the circular chart with the text in the section on a display system when the text fits within the polygon in the section (operation808), with the process terminating thereafter. In this manner, the process graphically displays the data with the text in the circular chart which enables a desired level of comprehension of the data.

With reference again to operation806, the computer system displays the text outside of the circular chart in the display system when the text does not fit within the polygon (operation810). In operation810, the text is displayed in one of a call out, a hover box, or some other graphical element. The process may be repeated for each section in the group of sections until all of the sections in the group of sections for the circular chart have been processed to display the circular chart.

Turning next toFIG. 9, an illustration of a flowchart of a process for identifying a largest size for a polygon that will fit in a section of a circular chart is depicted in accordance with an illustrative embodiment. The process illustrated inFIG. 9is an example of an implementation for operation802inFIG. 8.

The process begins by identifying the largest size for the polygon that will fit in the section of the circular chart with a current number of lines of the text (operation900). Part of operation900may include the process of identifying a centroid, an inner radius, and an outer radius for the section. The process may also identify an orientation for the section. The largest size for the polygon may then be identified in operation900based on the centroid, the inner radius, the outer radius, the orientation for the section, and the current number of lines of text.

The process determines whether the current number of lines of text will fit with in the polygon having the largest size for the current number of lines of text (operations902). If the current number of lines of text does not fit in the polygon, the process increments the current number of lines of text (operation904). A determination is made as to whether the current number of lines of text is greater than a threshold (operation906). In operation906, the threshold may be set to any number of lines of text. For example, it may be undesirable for aesthetic reasons to have more than 3 lines of text in a section. If the current number of lines of text is greater than the threshold indicates, then text is not to be displayed in the section (operation908), with the process terminating thereafter.

With reference again to operation906, if the current number of lines of text is not greater than the threshold, the process returns to operation900. With reference again to operation902, if the current number of lines of text fit within the polygon, the process terminates.

Turning now toFIG. 10, an illustration of a flowchart of a process for graphically displaying data is depicted in accordance with an illustrative embodiment. The process illustrated inFIG. 10may be implemented in circular chart environment100inFIG. 1. In particular, the process may be implemented in chart generator102to display data118with text126in donut chart110on display system120in computer system106.

The process begins by displaying a donut chart that includes a section in a group of sections on a display system based on data for the donut chart (operation1000). The process identifies text to display in a rectangle in the section (operation1002).

The process next calculates the difference between the outer and inner radius of the donut chart (operation1004). The process calculates the size of the section in degrees by subtracting the angles of the dividing lines that separate the section from the other sections in the donut chart (operation1006).

A determination is made as to whether the size of the section is greater than a largest desired size (operation1008). In operation1008, the largest desired size for a section is selected from at least one of 64 degrees, 70 degrees, 90 degrees, or some other suitable limit. In these illustrative examples, 90 degrees is the theoretical limit for theta when using the law of cosines as the formula to determine the size of the rectangle. The largest size may be based on desired aesthetics for displaying a donut chart in these illustrative examples.

As depicted, when the size of the section is not greater than the largest desired size, a variable named theta is set to the size of the section in degrees (operation1010). As also depicted, when the size of the section is greater than the largest desired size, the variable named theta is set to the largest desired size (operation1012).

The process next sets the number of lines of text for the rectangle to one (operation1014). The process determines the height of the rectangle based on the number of lines of text set for the rectangle (operation1016). The process next calculates the largest width of the rectangle (operation1018). The process makes a determination as to whether the text will fit in the number of lines of text set for the rectangle (operation1020). As depicted, if the text will fit in the number of lines of text, the process displays the text in the rectangle (operation1022), with the process terminating thereafter.

With reference again to operation1020, if the text will not fit in the number of lines of text, the process makes a determination as to whether the number of lines of text for the rectangle is greater than the largest desired number of lines of text (operation1024). The largest desired number of lines of text for the rectangle is at least one of 0, 1, 2, 3, or any other suitable number. When the largest desired number of lines of text for the rectangle is set to 0, text is not displayed in the section. The largest desired number of lines of text for the rectangle may also be set to the number of lines of text that fit in a rectangle having a largest height in the section. The largest desired number of lines of text may be 3. The largest desired number of lines of text may be based on desired aesthetics in displaying the donut chart.

As depicted, when the number of lines of text for the rectangle is greater than the largest desired number of lines of text, the process generates an indication that the text does not fit in the section (operation1026), with the process terminating thereafter. With reference again to operation1024, when the number of lines of text for the rectangle is fewer than the largest desired number of lines of text, the process increases the number of lines of text for the rectangle by one (operation1028), with the process returning to operation1016. The process may be repeated to display text for each section in the group of sections in the donut chart.

For example, the size of the polygons and the determination of whether text can fit in the polygons can be performed with the text for the sections being displayed in the circular chart after all of the sections have been processed. In another illustrative example, the operation for identifying the size of the sections based on the data also may be performed. These operations may be performed prior to the operations for displaying the text.

With reference toFIGS. 11-13, examples of program code for generating circular charts are depicted in accordance with an illustrative embodiment. The program code in these figures is shown using JavaScript. Illustration of this program code is not meant to limit the manner in which other illustrative examples may implement it. As used herein, program code may be in any suitable type of programming language for implementing the specified function or functions. For example, Java, C++, or other types of programming languages may be used.

Turning toFIG. 11, an illustration of program code for displaying text in a section of a circular chart based on the orientation of the section is depicted in accordance with an illustrative embodiment. As depicted, program code1100is an example of program code that may be used in chart generator102inFIG. 1. This program code may be run to display text within sections114for circular charts104inFIG. 1based on the orientation for sections114.

As depicted, program code1100includes initialization section1102. In the illustrative example, initialization section1102includes instructions to set a variable named textWidth to the width in pixels of text for a variable named textItem. As depicted, textItem includes the text to be displayed in the section. The variable named arcBox is the rectangle where the text for the section will be displayed. As used herein, a pixel is the smallest addressable dot used in an image. For example, when a circular chart is 100 pixels wide by 100 pixels high, the circular chart has 10,000 addressable pixels.

In this illustrative example, initialization section1104sets the variable named bufferForColor to 30 pixels. As depicted, bufferForColor is used to reduce the maximum size of the rectangle where the text for the section will be displayed. The maximum size is reduced for aesthetic reasons. As also depicted, the variable named labelAngle is set to the angle of the section of the circular chart currently being processed using program code1100. The angle of the section for the circular chart was determined in other program code before program code1100is used. As depicted, initialization section1106sets variables used by program code for displaying text in a section for a circular chart based on whether labelAngle is between 65 degrees and 115 degrees or 245 and 295 degrees.

Turning next toFIG. 12, an illustration of program code for displaying circular charts is depicted in accordance with an illustrative embodiment. As depicted, program code1200is an example of program code in chart generator102that may be run to display sections114for circular charts104inFIG. 1.

As depicted, program code1200includes max width calculation section1202. In the illustrated example, max width calculation section1202includes instructions that identify the maximum width of a rectangle for a pie chart. As depicted, max width calculation section1202includes a variable named labelRadius used as the maximum height of the rectangle for the pie chart. In this illustrative example, labelRadius is set using the formula: (((radius of the pie chart*0.8)−(radius of the pie chart*0.35))/2). This formula may be replaced with the formula “0.225*radius of the pie chart” or some other suitable formula for determining the maximum height of the rectangle.

In this illustrative example, max width calculation section1202includes instructions that identify the maximum width of the rectangle. The instructions in max width calculation section1202use the law of cosines as a formula to calculate the maximum width of the rectangle.

In this illustrative example, program code1200includes section1204. As depicted, section1204includes instructions that loop through each section of the pie chart and calls program code that displays text in the section.

With reference now toFIG. 13, an illustration of program code for displaying text in a section for a circular chart is depicted in accordance with an illustrative embodiment. As depicted, program code1300is an example of program code in chart generator102that may be run to display lines132of text126within sections114of circular charts104inFIG. 1.

As depicted, program code1300includes section1302. Section1302includes instructions that split text for a section of a circular chart into a number of lines of text within a rectangle in the section. The rectangle may or may not be displayed based on aesthetic preferences. As depicted, section1302includes instructions that will hide the text if the text will not fit within the rectangle.

Turning now toFIG. 14, an illustration of a block diagram of a data processing system is depicted in accordance with an illustrative embodiment. Data processing system1400may be used to implement data processing devices in computer system106inFIG. 1. In this illustrative example, data processing system1400includes communications framework1402, which provides communications between processor unit1404, memory1406, persistent storage1408, communications unit1410, input/output (I/O) unit1412, and display1414. In this example, communications framework1402may take the form of a bus system.

Processor unit1404runs instructions for software that may be loaded into memory1406. Processor unit1404may be a number of processors, a multi-processor core, or some other type of processor, depending on the particular implementation.

Memory1406and persistent storage1408are examples of storage devices1416. A storage device is any piece of hardware that is capable of storing information, such as, for example, without limitation, at least one of data, program code in functional form, or other suitable information either on a temporary basis, a permanent basis, or both on a temporary basis and a permanent basis. Storage devices1416may also be referred to as computer readable storage devices in these illustrative examples. Memory1406, in these examples, may be, for example, a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage1408may take various forms, depending on the particular implementation.

For example, persistent storage1408may contain one or more components or devices. For example, persistent storage1408may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage1408also may be removable. For example, a removable hard drive may be used for persistent storage1408.

Communications unit1410, in these illustrative examples, provides for communications with other data processing systems or devices. In these illustrative examples, communications unit1410is a network interface card.

Input/output unit1412allows for input and output of data with other devices that may be connected to data processing system1400. For example, input/output unit1412may provide a connection for user input through at least one of a keyboard, a mouse, or some other suitable input device. Further, input/output unit1412may send output to a printer. Display1414provides a mechanism to display information to a user.

Instructions for at least one of the operating system, applications, or programs may be located in storage devices1416, which are in communication with processor unit1404through communications framework1402. The processes of the different embodiments may be performed by processor unit1404using computer-implemented instructions, which may be located in a memory, such as memory1406.

These instructions are referred to as program code, computer usable program code, or computer readable program code that may be read and executed by a processor in processor unit1404. The program code in the different embodiments may be embodied on different physical or computer readable storage media, such as memory1406or persistent storage1408.

Program code1418is located in a functional form on computer readable media1420that is selectively removable and may be loaded onto or transferred to data processing system1400for execution by processor unit1404. Program code1418and computer readable media1420form computer program product1422in these illustrative examples. In one example, computer readable media1420may be computer readable storage media1424or computer readable signal media1426. In these illustrative examples, computer readable storage media1424is a physical or tangible storage device used to store program code1418rather than a medium that propagates or transmits program code1418.

Alternatively, program code1418may be transferred to data processing system1400using computer readable signal media1426. Computer readable signal media1426may be, for example, a propagated data signal containing program code1418. For example, computer readable signal media1426may be at least one of an electromagnetic signal, an optical signal, or any other suitable type of signal. These signals may be transmitted over at least one of communications links, such as wireless communications links, optical fiber cables, coaxial cables, wires, or any other suitable types of communications links.

The different components illustrated for data processing system1400are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. The different illustrative embodiments may be implemented in a data processing system including components in addition to or in place of those illustrated for data processing system1400. Other components shown inFIG. 14can be varied from the illustrative examples shown. The different embodiments may be implemented using any hardware device or system capable of running program code1418.

The description of the different illustrative embodiments has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the embodiments in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art.

The different illustrative examples describe components that perform actions or operations. In an illustrative embodiment, a component is configured to perform the action or operation described. For example, the component may have a configuration or design for a structure that provides the component with an ability to perform the action or operation that is described in the illustrative examples as being performable by the component.

Further, different illustrative embodiments may provide different features as compared to other desirable embodiments. The embodiment or embodiments selected are chosen and described in order to best explain the principles of the embodiments, the practical applications, and to enable others of ordinary skill in the art to understand the disclosure for various embodiments with various modifications as are suited to the particular uses contemplated.